2009-10-01 89 views
1

我嘗試從滑塊中捕獲MouseUp事件,但它永遠不會進入處理程序。該代碼是通常的:Silverlight事件處理

<Slider x:Name="sliderTime" 
     MouseLeftButtonDown="sliderTime_MouseLeftButtonDown" 
     MouseLeftButtonUp="sliderTime_MouseLeftButtonUp" /> 

而且在後面的代碼:

private void sliderTime_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    //some code 
} 

它是滑塊,或者別的什麼錯誤? 謝謝

回答

0

自Silverlight 2 Beta 2以來,很多控件都不會觸發MouseDown/MouseUp事件,我相信Slider就是其中之一。您可以通過從Slider繼承並編寫自定義代碼來觸發這些事件來「變通」。 看看這裏:http://forums.silverlight.net/forums/p/18328/61917.aspx

+0

嗯很有趣,但你知道滑塊火災的MouseDown但不是的MouseUp,這是我認爲它可能是一個錯誤的原因。你怎麼看? – mimic 2009-10-01 07:24:02

1

我複製了你發佈的代碼,它爲我工作。

這個事件實際上並沒有連接起來嗎?

我建立了兩種不同的方式,事件爲我解僱。你是如何構建它的?

還檢查,看你是否有某種物體覆蓋滑塊?

版本1: 打開混合3,文件>創建項目,Silverlight 3應用程序+網站。添加一個滑塊並將其命名(僅僅因爲你做了)。添加了一個標籤(以檢查事件觸發)。

選擇組件,切換事件並雙擊MouseLeftButtonDown和MouseLeftButtonUp的事件以創建事件和代碼隱藏存根。當MouseLeftButtonUp觸發時更新標籤。

版本2:打開混合3,文件>創建項目,Silverlight 3應用程序+網站。添加了滑塊和標籤。右鍵單擊Blend中的silverlight項目並在VS2008中打開它。使用智能感知技術爲標記中的事件佈線。

兩個版本都適合我。這是其他代碼的一部分嗎?如果是這樣,嘗試使用滑塊創建一個版本,並查看是否有效,如果有,那麼現有代碼中的某些內容可能會關閉。我會發布我的代碼,以便您可以看到它。

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" 
    x:Class="SilverlightAppSlider2Test.MainPage" 
    Width="640" Height="480"> 

    <Grid x:Name="LayoutRoot" Background="White"> 
      <Slider x:Name="sliderTime" MouseLeftButtonUp="Slider_MouseLeftButtonUp" MouseLeftButtonDown="sliderTime_MouseLeftButtonDown" Width="Auto" Height="20" Margin="5"/> 
      <dataInput:Label x:Name="Label1" Width="200"/> 
    </Grid> 
</UserControl> 

private void Slider_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) 
    { 
     // TODO: Add event handler implementation here. 
     Label1.Content = "Mouse button left released."; 
    }