Silverlight Listbox触发MouseRightButtonDown,但不触发MouseLeftButtonDown

Ste*_*eav 3 silverlight events mouseclick-event silverlight-4.0

我在一个更大的项目中遇到这个问题......所以我设置了一个'Testpoject'作为概念证明:

  • 新的Silverlight应用程序
  • 添加列表框
  • 使用几个复选框填充列表框
  • 注册listBox1_MouseLeftButtonDown
  • 注册listBox1_MouseRightButtonDown

你会看到,listBox1_MouseLeftButtonDown在任何情况下都不会触发....然而,listBox1_MouseRightButtonDown触发就好了.

我尝试使用从ListBox派生的自定义类并重写,假设ListBox类中的某些东西设置了e.Handled = false,但这也没有改变行为.

关于为什么会发生这种情况以及如何解决这个问题

(这个问题也阻止'父母'控制接收点击事件...所以事件传递被破坏了)

:编辑:我通过解决方法解决了我的问题...所以不再需要答案了.只是如果有人想要弄清楚为什么会发生这种情况;)

Chr*_*eng 5

似乎回答了你的问题.报价:

这是因为ListBoxItem在内部处理此事件以及MouseLeftButtonDown事件(停止冒泡)以实现项目选择.

解决方案是在代码隐藏文件中添加事件处理程序.来自文章:

尽管在路由事件处理程序中将RoutedEventArgs参数的Handled属性设置为true似乎会停止隧道或冒泡,但是在树上进一步向上或向下的各个处理程序仍然可以选择接收事件!这只能通过过程代码来完成,使用AddHandler的重载来添加布尔的handlingEventsToo参数.

尽管看到最后的警告.