2009-09-24 43 views
3

當試圖使用Slider控件時,我想傾聽MouseLeftButtonDownMouseLeftButtonUp。我爲這兩個事件都設置了處理程序。 MouseLeftButtonUp按預期工作。 MouseLeftButtonDown根本沒有提出。Slider MouseLeftButtonDown不起作用?

任何想法爲什麼?

我已經做了一些谷歌搜索,似乎WPF也不會觸發。其中一個解決方案(in this post)是使用Silverlight不支持的事件的預覽版本。

有沒有簡單的解決方案,我沒有看到?

感謝 Ĵ

回答

11

這是因爲滑塊處理鼠標下/上事件。它的內部實現爲兩個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情況幾乎相同(在名稱中的微小差異)。

+0

正是我需要的。謝謝。這應該作爲答案百靈鳥! – NER1808 2014-03-24 16:37:56