gpt4 book ai didi

c# - WPF slider 仅可拖动

转载 作者:行者123 更新时间:2023-11-30 12:57:13 25 4
gpt4 key购买 nike

我有一个奇怪的要求,让 WPF 应用程序中的 slider 只能拖动,这意味着单击 slider 轨道不应移动 slider ,它应该仅在用户单击并拖动拇指时移动。有没有办法在 WPF 中完成此操作?我看到一个帖子建议你从 Slider 派生一个自定义控件,但是只有 4 个虚方法,而且似乎没有一个有用。

这是我现在的 slider 定义。

<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>

最佳答案

通过拦截径向 slider 上的鼠标按下事件并检查鼠标是否在拇指 slider 上,我能够获得我认为是预期的行为。你忘了说你正在使用 the Mahapps UI library .我使用了一个名为 Snoop 的程序检查页面中的可视元素以查找 MetroThumb 控件的名称。 MetroThumb 元素只能在 radialSlider 加载后才能找到,因此需要在 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 slider 仅可拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com