尝试使用Slider
控件时,我想听取MouseLeftButtonDown
和MouseLeftButtonUp
。我为这两个活动设置了处理程序。 MouseLeftButtonUp
按预期工作。根本没有提出MouseLeftButtonDown
。
任何想法为什么?
我做了一些谷歌搜索,似乎WPF也没有开火。其中一个解决方案(in this post)是使用事件的预览版本,这是silverlight不支持的。
我有没有看到任何简单的解决方案?
由于 Ĵ
答案 0 :(得分:12)
这是因为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中情况几乎相同(名称差异很小)。