c# – 仅限WPF Slider Draggable
作者:互联网
我有一个奇怪的要求,只能让WPF应用程序中的滑块可拖动,这意味着单击滑块轨道不应移动滑块,它只应在用户单击并拖动滑块时移动.有没有办法在WPF中实现这一目标?我看到一篇帖子暗示你从Slider派生出一个自定义控件,但是只有4个虚拟方法,而且似乎没有帮助.
这是我现在的滑块定义.
<Slider Name="radialSlider"
Width="150"
VerticalAlignment="Center"
TickFrequency=".005"
Minimum="-.25"
Maximum=".25"
IsSnapToTickEnabled="True"
ValueChanged="radialSlider_ValueChanged"
Thumb.DragCompleted="radialSlider_DragCompleted"
Grid.Column="1">
</Slider>
解决方法:
通过拦截径向滑块上的鼠标按下事件并检查鼠标是否在拇指滑块上,我能够得到我认为的预期行为.你忘了提到你正在使用the Mahapps UI library.我使用了一个名为Snoop的程序来检查页面中的可视元素,以找到MetroThumb控件的名称.只有在加载了radialSlider之后才能找到MetroThumb元素,因此需要在radialSlider的Loaded事件触发后调用搜索方法.
MetroThumb mt;
loadPage(){
radialSlider.Loaded += (s, e) => {
mt = radialSlider.FindChild<MetroThumb>("HorizontalThumb");
};
radialSlider.PreviewMouseDown += md;
}
private void md(object sender, RoutedEventArgs e) {
if (!mt.IsMouseOver) {
e.Handled = true;
}
}
标签:c,wpf,wpf-controls 来源: https://codeday.me/bug/20190711/1431565.html