MouseLeftButtonUp不会触发

我有一个Button

   

但问题是,与MouseLeftButtonDown不同,事件MouseLeftButtonUp不会触发。 为什么? 我该如何解决? 谢谢。

可能是因为Button已经处理了事件,所以它不会过滤到Image控件。

为什么要在Image上处理MoustUp和MouseDown事件? 为什么不在Button上处理它们?

编辑
在快速查看此事件的文档之后,我看到MouseLeftButtonUp的路由策略是Direct ,但实际的基础事件是具有冒泡策略的MouseUp事件。 因此,实际上, MouseLeftButtonUp应该具有事实上的冒泡策略,这意味着Image应该有机会在Button之前处理事件。

听起来像其他东西可能正在发生。 如果在Image控件上将Image设置为nothing,并且background为null(与Color.Transparent不同),那么就鼠标事件而言,WPF会将控件视为“不存在”。

编辑2
嗯……也许我最初的猜测是正确的。 根据这个post:
http://social.msdn.microsoft.com/forums/en/wpf/thread/e231919d-9fef-4aa5-9dcb-2c1eb68df25b/#306db880-ed50-45d2-819f-88d76f7148c1
Button正在处理MouseUp事件。 尝试使用PreviewMouseUp然后检查以查看单击了哪个按钮。

编辑3
好的…我想我弄清楚了。 我打赌Button正在MouseDown事件中“捕获”鼠标。 发生这种情况时,其他控件将不会接收MouseUp或MouseDown事件(包括预览版本),直到释放鼠标。
请参阅: http : //books.google.com/books?id=nYl7J7z3KssC&pg=PA146#v=twopage&q&f=true

正如Cyborgx37所说,Click事件正在处理LeftMouseUp事件。

您可以在Button上使用PreviewMouseLeftButtonUp事件而不是MouseLeftButtonUp ,如下所示:

  

你的Button模板只有一个Image,我猜你不需要这个Button,你可以像上面一样使用,这样你就可以捕获MouseLeftUp事件。

  

这种方式更容易,但这取决于您的需求。

顺便说一句,对不起我的废话英语,我希望它可以帮到你。

尝试使用事件PreviewMouseLeftButtonUp。