2009-10-01 101 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."; 
    }