我已经实施了 UserControl. 。然后我想处理最初处理的事件 Window (键盘按)。路由另一个组件捕获的事件的最佳方法是什么?

预先感谢您的答复和提示!

干杯

有帮助吗?

解决方案

这取决于您要访问的事件。如果是一个预览事件,并且窗口正在设置为true,则需要使用Alex建议的方法来规避窗口对隧道的处理。如果这是一个冒泡的事件(即键盘),您不需要做任何特别的事件,因为冒泡的事件首先击中了儿童元素的处理程序,然后沿着视觉树上登上视觉树,因此窗户处理程序直到UC之后才会发生。

您需要谨慎使用关键事件需要谨慎的一件事是,如果焦点是在或内部的,则该事件只会首先被UC拾取。这不是鼠标事件之类的事情,因为它们从树上的特定位置开始。

其他提示

我相信你不能那个。Window 类正在包装基于WIN32消息的事件模型,这将是唯一可以访问这些信息的WPF实体。

我建议您创建一个附件(将由 Window)并自己实施事件的路由,以便控件可以订阅。

您可以连接路由处理程序指定要处理处理的消息:

this.AddHandler(routedEvent, handler, true);

在哪里 this 是一个UIELEMENT或派生类。

但是,可能仍然有事件(在这种情况下是按键的事件),这些事件不会使它经过窗口。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top