我有一个奇怪的要求,只能让
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; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。