让我说我在视觉树中的某个地方有我的用户控件。父和子是我无法修改的第三方控件。我想在我的控件中过滤键盘事件,以便 children 控件不会收到一些键盘事件,但父控件会这样做。
我试着用一些图解释我想要实现的目标。如果控件不处理键盘事件,则所有事件都会通过可视树反弹:
但是,f.e。当用户按 A 时,
答案 0 :(得分:0)
在WPF中通常可以执行的处理被抑制事件的方法是在代码中添加处理程序并重新引发事件。为此,请使用UIElement.AddHandler()方法,例如:
child2.AddHandler(UIElement.TextInput, new TextCompositionEventHandler(nameOfYourHandlerFunction), true);
即使设置了Handled标志,'true'布尔值也会使nameOfYourHandlerFunction触发。这样做不会自动重新起泡,因此您需要再次举起活动。
base.RaiseEvent(e);
这适用于具有Bubble的路由策略的事件。