我有一个MouseHandler类,用于处理网格所有元素中的mousedown事件。现在,一旦为一个元素处理了一个事件,我就不希望它为它的父母处理它。当然我可以设置e.Handled = true,但这会阻止事件在所有应用程序中的传播。我不想要这个,如果其他人想要处理他们应该能够做的事件,我只是不希望我的MouseHandler类继续处理事件。
到目前为止,我唯一的想法是在我的班级中保留一个处理事件的静态列表,我可以将事件标记为已处理,因此在处理事件之前,我会检查事件是否已经在此列表中。但后来我必须处理清理这个清单。不是很多工作,但仍然有点臭。我只是想知道是否有更简单的方法来解决这个问题。
以下是我的用户界面以及我用它做的事情的一个例子:
Grid
-- Textbox
-- Label
-- Content control
-- DatePicker
-- StackPanel
-- Button
-- Image
如果我点击这些控件中的任何一个,我的类将处理MouseDown事件,以显示所单击控件的属性。如果我单击最后一个Button并且不将事件标记为已处理,它将传播到StackPanel - 内容控件 - 网格。这就是我不想要的。另一方面,如果我设置e.Handled = true,则会出现依赖于MouseDown事件的按钮功能。