.net 滑块延迟';s的双向值绑定会导致波动行为

.net 滑块延迟';s的双向值绑定会导致波动行为,.net,wpf,vb.net,data-binding,wpf-controls,.net,Wpf,Vb.net,Data Binding,Wpf Controls,我将a的值绑定到一个整数属性,该属性表示网络设备上的卷。此网络请求需要一点时间(通常考虑解耦UI(滑块)从实际获取和设置卷的组件。当滑块值更改时,它应将更改卷为新值的请求排队,但仍将继续。仅当您第一次从设备绘制或刷新UI时,才从设备的卷设置滑块位置;您可能不会认为卷已更改设置用户将其拖动到的位置 编辑 (充分披露:我自己没有做过很多WPF) 因此,在研究了我的意思的一个实际示例之后,我了解了UpdateSourceTrigger,它为您提供了许多触发绑定元素重新绑定的方法。我发现,它将Updat

我将a的值绑定到一个整数属性,该属性表示网络设备上的卷。此网络请求需要一点时间(通常考虑解耦UI(滑块)从实际获取和设置卷的组件。当滑块值更改时,它应将更改卷为新值的请求排队,但仍将继续。仅当您第一次从设备绘制或刷新UI时,才从设备的卷设置滑块位置;您可能不会认为卷已更改设置用户将其拖动到的位置

编辑

(充分披露:我自己没有做过很多WPF)


因此,在研究了我的意思的一个实际示例之后,我了解了UpdateSourceTrigger,它为您提供了许多触发绑定元素重新绑定的方法。我发现,它将
UpdateSourceTrigger
与计时器相结合。其思想是拖动滑块开始一个短暂的超时,然后
UpdateSourceTrigger
被告知更新其数据绑定。诀窍是,当用户继续更改滑块值时,超时被中断。因此,最终的效果是,在用户最终确定所需的值之前,您的设备实际上不会使用滑块值进行更新,这将在滑动您的设备时为您提供平滑、响应迅速的UIe正在查找。您仍然可以像现在一样从设备上实时更新滑块。我希望这会让事情变得更清楚。

可以工作,但用户也可以通过其他方式(如物理遥控器或应用程序的第二个实例)更改音量。这会导致滑块显示不正确的值,这是我希望始终避免的。基本上,您建议将绑定模式设置为OneWayToSource(或其他名称)然后在setter上实现某种形式的异步。好吧,我想你可以在加载或刷新设备时扔掉关于它的部分。你可以留在设备组件通知UI并设置滑块值的部分,但添加逻辑,在用户仍在拖动幻灯片时临时禁用更新r、 听起来不错,但我该怎么做呢?我对WPF不是很有经验(仍在学习基础知识),所以你需要对我有耐心。:D
    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