我尝试从滑块捕获MouseUp事件,但它从未进入处理程序内部。代码是常见的:
<Slider x:Name="sliderTime"
MouseLeftButtonDown="sliderTime_MouseLeftButtonDown"
MouseLeftButtonUp="sliderTime_MouseLeftButtonUp" />在后面的代码中:
private void sliderTime_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
//some code
}是滑块的bug还是别的什么?谢谢
发布于 2009-10-01 07:34:48
我复制了你发布的代码,它对我起作用了。
有没有可能这个事件实际上并没有连线?
我以两种不同的方式构建它,事件为我触发。你是如何构建它的?
还要检查一下你是否有一个物体覆盖了滑块?
版本1:打开Blend 3,file>create项目,Silverlight3应用程序+网站。添加了一个滑块并将其命名(简单地说就是因为你这样做了)。添加了标签(用于检查事件触发)。
选择组件,切换事件并双击MouseLeftButtonDown和MouseLeftButtonUp的事件,以创建事件和代码隐藏存根。已在MouseLeftButtonUp触发时更新标签。
版本2:打开Blend 3,file>create项目,Silverlight3应用程序+网站。添加了滑块和标签。右键单击Blend中的silverlight项目,然后在VS2008中打开它。使用intellisense连接标记中的事件。
两个版本都适用于我。这是其他代码的一部分吗?如果是这样的话,试着做一个只有滑块的版本,看看它是否有效,如果它有效,那么你现有代码中的一些东西可能会关闭。我会发布我的代码,这样你就可以看到它了。
<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.";
}发布于 2009-10-01 07:00:29
从Silverlight2Beta2开始,很多控件都不会触发MouseDown/MouseUp事件,我相信Slider就是其中之一。您可以通过继承Slider并编写自定义代码来触发这些事件来“解决”这一问题。看看这里:http://forums.silverlight.net/forums/p/18328/61917.aspx
发布于 2009-10-23 03:31:24
可以使用FrameworkElement.AddHandler方法处理此事件。但是,您不能用xaml将其连接起来。在这篇博客文章中有更多信息:
http://blogs.msdn.com/kmahone/archive/2009/03/19/handling-mouse-input-events-on-controls.aspx
https://stackoverflow.com/questions/1502192
复制相似问题