UWPでWindows向けアプリケーションを作っています。
UIのスライダーの値をコードから変更した際にValueChangedイベントを発生させない方法を知りたいです。
または、ValueChangedイベント内で、イベント発生原因が「ユーザーによるUI操作かコードからの変更か」を知る方法はありますか。
AndroidのスライダーUIの「OnSeekBarChangeListener」では、「fromUser: Boolean」によって変更元がユーザーかコードか判別できます。
同様のものがUWPのスライダーにありましたらご教授いただければ幸いです。
背景
サーバーと通信しスライダーの値を同期させているのですが、値を変更するとループに陥ります。
サーバー側の変更は出来ないため、イベントの発火原因がユーザーかコードかによって切り分けたいと考えています。
よろしくお願いいたします。
xaml
1<Slider x:Name="sldr_volume" Width="300" Margin="0,20,0,0" Minimum="0" Maximum="100" IsEnabled="True" 2 ValueChanged="sldr_volume_ValueChanged" LargeChange="1" /> 3
C#
1public void ChangeUIVolume(int vol) 2{ 3 //サーバーからの値変更の通知受信後、スライダーの値を変更 4 sldr_volume.Value = vol; 5} 6private void sldr_volume_ValueChanged(object sender, RangeBaseValueChangedEventArgs e) 7{ 8 //ChangeUIVolume()から値が変更された場合は呼び出されない or 9 //呼び出し元がユーザーによるUI操作かコードからの変更か知りたい 10 Debug.WriteLine(e.NewValue); 11 サーバーに送信(e.NewValue)//サーバーからは値の変更の通知が飛んでくる 12}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/09 02:09
2021/04/09 02:57