尝试使用Slider控件时,我想听MouseLeftButtonDownMouseLeftButtonUp。我为两个事件都设置了处理程序。 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中,情况几乎相同(名称略有不同)。

10-04 23:41