尝试使用Slider
控件时,我想听MouseLeftButtonDown
和MouseLeftButtonUp
。我为两个事件都设置了处理程序。 MouseLeftButtonUp
可以正常工作。 MouseLeftButtonDown
完全不引发。
有什么想法吗?
我做了一些谷歌搜索,似乎WPF也不会触发。解决方案之一(in this post)是使用事件的预览版,而Silverlight不支持此功能。
有没有我没有看到的简单解决方案?
谢谢
Ĵ
最佳答案
发生这种情况是因为Slider处理鼠标的向下/向上事件。内部实现为两个RepeatButtons和一个中间的拇指。当您单击滑块的左侧或右侧时,鼠标事件将由RepeatButtons处理,但不会得到它们。
如果仍要处理已处理事件,则可以使用AddHandler()方法。这是Silverlight示例:
XAML
<Slider Width="100"
VerticalAlignment="Top"
Minimum="0"
Maximum="100"
Name="sl" />
C#
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
sl.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler(Slider_MouseLeftButtonDown), true);
sl.AddHandler(MouseLeftButtonUpEvent, new MouseButtonEventHandler(Slider_MouseLeftButtonUp), true);
}
private void Slider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
}
private void Slider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
}
在WPF中,情况几乎相同(名称略有不同)。