滑块MouseLeftButtonDown不起作用?

时间:2009-09-24 13:08:51

标签: wpf silverlight slider mouseevent

尝试使用Slider控件时,我想听取MouseLeftButtonDownMouseLeftButtonUp。我为这两个活动设置了处理程序。 MouseLeftButtonUp按预期工作。根本没有提出MouseLeftButtonDown

任何想法为什么?

我做了一些谷歌搜索,似乎WPF也没有开火。其中一个解决方案(in this post)是使用事件的预览版本,这是silverlight不支持的。

我有没有看到任何简单的解决方案?

由于 Ĵ

1 个答案:

答案 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中情况几乎相同(名称差异很小)。