Wpf Conditional PreviewMouseDown

时间:2014-12-01 16:13:56

标签: wpf caliburn.micro

我有一个ListBox的WPF模板,其中每个ListBoxItem都包含一个按钮。

ListBoxItem处理PreviewMouseDown事件。 ListBoxItem中的按钮有一个click事件。我正在使用MVVM和Caliburn.Micro。

我想要发生的是当用户点击按钮时,ListBoxItem会忽略PreviewMouseDown。根据我的理解,虽然自PreviewMouseDown“隧道向下”而不是冒泡,但是无法在按钮级别的Visual Tree上捕获该事件。而且,由于事件是在ViewModel中处理的,我想避免像“如果UIElement是一个按钮,忽略PreviewMouseDown”这样的逻辑,因为这会预先假定某种类型的视图。

有没有办法让ListBoxItem仅在用户没有点击按钮时有条件地执行PreviewMouseDown?

编辑:(我在ViewBox for ListBoxItem中使用cal:Message.Attach将命令附加到ViewModel上的方法,因此后面没有代码)

1 个答案:

答案 0 :(得分:0)

尝试以下操作:创建一个Behavior并将其附加到Xaml中的ListBox-Control。在行为内注册到ListBox的预览事件。在已注册的EventHandler中,将事件的e.Handled设置为true。

如果您有权访问ListBoxItem,您还可以直接将行为附加到项目。