wpf - 如何处理父控件中的子事件

标签 wpf events event-handling routing event-bubbling

在我的主窗口中,我有一个包含文本框的子控件(用户控件)。如何处理主(父)窗口中子控件文本框的 textchange 事件。

请为我提供一些代码示例,因为我是事件路由的新手。

最佳答案

您应该能够从父控件 Hook 事件。但是由于您的父控件没有自己的 TextChanged 事件,您需要使用附加属性语法:

<Window ...
        TextBox.TextChanged="ChildTextBoxChanged">

并在您的代码隐藏中:
private void ChildTextBoxChanged(object sender, TextChangedEventArgs args)
{
    ...
}

您不必专门将 TextBox.TextChanged= 放在 Window 上——只是作为 TextBox 父级的任何控件,即作为 UserControl 父级的任何控件。该事件将依次冒泡到每个父级,一直到顶级 Window ,并且可以在沿途的任何地方进行处理。

(请注意,如果有人 Hook 该事件并设置 e.Handled = true ,则该事件不会超过该点。了解您是否有多个级别的处理程序很有用。)

关于wpf - 如何处理父控件中的子事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258821/

相关文章:

java - Javafx在特定条件下每10毫秒触发一个事件

javascript - 从事件处理程序写入 WriteStream

c# - 使用在 "Parent"ViewModel (MVVM) 中声明的命令

node.js - 本地 eventEmitter 监听全局 eventEmitter

c# - WPF:如何区分 Window.Close() 调用和系统菜单关闭操作?

java - 空指针异常 - 事件和监听器

c# - 泄漏 Web 服务完成事件?

ArrowDown 的 Javascript 事件监听器 - 停止页面滚动

wpf - 搜索和过滤ObservableCollection的有效方法是什么

wpf - 将 <object property ="{StaticResource key}".../> 中的 Key 绑定(bind)到一个值