我有一个滑块,它的值绑定到某个属性,并且属性一直在更新它.在拖动[thumb on]滑块的同时,我想阻止滑块的这个更新值进行绑定,直到用户完成它的拖动.
Slider上有没有任何属性可以做到这一点,或者我需要为此编写代码?
提前致谢!
Slider的模板包含一个Thumb,当鼠标移动时,它会引发ThumbDragDelta事件.Slider将在收到ThumbDragDelta事件时立即更新绑定值.
诀窍是停止这个事件.最简单的方法是子类Slider:
public class SliderIgnoreDelta : Slider
{
protected override void OnThumbDragDelta(DragDeltaEventArgs e)
{
// Do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
在滑块完成拖动之前,此滑块不会更新该值.
另一种解决方案是截取Thumb上的ThumbDragDelta事件.如果你碰巧正在重新模仿Slider,这可能是一个更好的解决方案.例如,如果您已经编写了一个EventBlocker类,在给定的RoutedEvent上设置Handled true,则可以将其放在模板中:
<Track.Thumb>
<Thumb my:EventBlocker.EventToBlock="{x:Static Thumb.DragDeltaEvent}" />
</Track.Thumb>
Run Code Online (Sandbox Code Playgroud)
但对于大多数情况,你可能想要使用我的第一个解决方案.
| 归档时间: |
|
| 查看次数: |
10161 次 |
| 最近记录: |