首页 > 解决方案 > 如何通过子控件事件更改父控件的内容?

问题描述

我有三个用户控件。ControlC 是 ControlB 的父级,ControlB 是 ControlA 的父级。现在我想使用 ControlA 的事件来更改 ControlC 的内容(假设将 ControlC 的内容更改为 ControlD)。如果只有 2 个控件,我可以做到这一点,我不知道用 3 个控件来做到这一点。有什么想法吗?对于 2 控制解决方案是:

        private void ChangeParentContent()
    {
        UserControlB userControlB = (UserControlB)this.Parent;
        userControlB.Content = new userControlC();
    }

标签: c#wpf

解决方案


编辑

在重新阅读了你的问题几次之后,我想我更好地理解了你的目的。@Servy 是正确的,您不应该从孩子修改父母。相反,创建父母可以订阅的事件。当事件被触发时,您可以在父级中处理该事件。我的原始答案(如下)提供了几种可用于实现此目的的路径。

原来的

几个想法:

  1. ControlB 可以订阅 ControlA 事件。ControlB 然后触发它自己的事件,ControlC 订阅了该事件。
  2. Modifier将ControlA 的更改为,public以便您可以直接从 ControlC ( ControlB.ControlA.Event += ...)访问它

推荐阅读