c# – 仅限WPF Slider Draggable
发布时间:2020-12-15 20:58:46 所属栏目:百科 来源:网络整理
导读:我有一个奇怪的要求,只能让 WPF应用程序中的滑块可拖动,这意味着单击滑块轨道不应移动滑块,它只应在用户单击并拖动滑块时移动.有没有办法在WPF中实现这一目标?我看到一篇帖子暗示你从Slider派生出一个自定义控件,但是只有4个虚拟方法,而且似乎没有帮助. 这
我有一个奇怪的要求,只能让
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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |