如何在父控件中处理子事件

Vik*_*ram 4 wpf events routing event-handling event-bubbling

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

请给我一些代码示例,因为我是事件路由的新手.

Joe*_*ite 11

您应该只能从父控件挂钩事件.但由于您的父控件没有自己的TextChanged事件,因此您需要使用附加属性语法:

<Window ...
        TextBox.TextChanged="ChildTextBoxChanged">
Run Code Online (Sandbox Code Playgroud)

在你的代码隐藏中:

private void ChildTextBoxChanged(object sender, TextChangedEventArgs args)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

你不必把TextBox.TextChanged=Window明确-这是的父母只是任何控制TextBox,即是你的父母任何控制UserControl.该事件将依次冒泡到每个父级Window,一直到顶级,并且可以在整个过程中随处理.

(请注意,如果有人挂钩事件并设置e.Handled = true,事件将不会超过该点.有用的是知道你是否有多个级别的处理程序.)