Sliderの値を、ネットワーク化されたデバイスのボリュームを表す整数プロパティにバインドします。このネットワーク要求は少し時間がかかります(通常< 100 ms)。何らかの理由でスライダが不安定になる原因になります。スライダの双方向値バインディングの遅延により、不安定な動作が発生する
は、ここに明確に私の単純化しすぎコードです:
Private _playbackVolume As Integer
Private _deviceForDemonstrationPurposes As New Device
Public Property PlaybackVolume As Integer
Get
Return _playbackVolume
End Get
Set(value As Integer)
_deviceForDemonstrationPurposes.Volume = value
End Set
End Property
Friend Sub UpdateVolume(volume As Integer)
' this is called by the instance of Device whenever its volume changes.
_playbackVolume = volume
RaisePropertyChanged("PlaybackVolume") ' INotifyPropertyChanged implementation.
End Sub
PlaybackVolume
プロパティにバインドすると、まだつまみをドラッグしながら、セッターが起動するようになります。ネットワークレイテンシの問題のため、スライダは要求が完了するのに要する時間が非常に長い間ロックされます。
スライダを滑らかにするための最良のアプローチとは何でしょうか?
でも動作しますが、ユーザーは他の手段(物理的なリモコンやアプリの2番目のインスタンスなど)でボリュームを変更することもできます。これは、スライダに間違った値を表示させる原因になります。これは、常に避けたいものです。 –
基本的には、バインディングモードをOneWayToSource(またはそれが呼び出されているもの)に設定し、セッターに何らかの非同期形式を実装することです。 –
OK、デバイスのロードまたはリフレッシュ時にのみ設定することができます。デバイスコンポーネントがUIに通知してスライダの値を設定する部分を離れて、スライダをドラッグしている間に一時的に更新を無効にするロジックを追加することができます。 – HackedByChinese