是否有与 AddHandler 等效的 XAML 来捕获已处理的事件?

Mar*_*eIV 5 wpf event-handling routed-events

根据MSDN 上的 UIElement.AddHandler,您可以为参数传递一个布尔值handledEventsToo,这样您仍然可以收到已处理事件的通知。有与此等效的 XAML 吗?

另一种方法是通过EventSetter 类,该类也指定了该属性,但它明确表示不应在 XAML 中使用它,尽管他们没有指定原因,而且我也想不出不这样做的充分理由。

我唯一能想到的是,它在初始化 XAML 时会造成严重破坏,如果您在代码中执行此操作(很可能),则不会出现这种情况,因为您很可能会在 InitializeComponent 之后执行此操作。然而,这完全是猜测。

我实际上正在考虑对我自己的 EventSetter 类版本进行子类化,以添加该属性,尽管我还没有考虑太多,甚至知道这是否可能,尽管我不明白为什么它不会。

Mik*_*ski 0

我一直在寻找同样的东西,但不幸的是,根据最新的MSDN 文档

设置如何调用事件处理程序的 InvokeHandledEventsToo 特征必须始终在代码中执行,以符合以下一般原则:在将实例的定义事件处理程序直接分配给 XAML 属性语法中的命名事件时,无法指定 InvokeHandledEventsToo。尽管在 XAML 中设置此值不会生成任何编译时错误,但在使用该样式时生成的 XAML 将产生运行时异常。

我认为这样做的目的handledEventsToo是为自定义控件提供更大的灵活性,其中代码隐藏不是问题,而不是使用“正常”MVVM 模式进行编码。