【发布时间】:2010-12-20 10:24:55
【问题描述】:
我正在使用 elementhost 在 Windows 窗体中托管 WPF 用户控件。我想知道如何在 WPF 控件中引用父窗体。
【问题讨论】:
我正在使用 elementhost 在 Windows 窗体中托管 WPF 用户控件。我想知道如何在 WPF 控件中引用父窗体。
【问题讨论】:
这是一种方法,在 WPF UserControl 中有一个按钮:
private void button1_Click(object sender, RoutedEventArgs e)
{
var source = (HwndSource)PresentationSource.FromDependencyObject(button1);
var host = (Forms.Integration.ElementHost)Forms.Control.FromChildHandle(source.Handle);
var form = (Forms.Form)host.TopLevelControl;
// Show form title
MessageBox.Show(form.Text);
}
(在此代码中Forms 是System.Windows.Forms 的别名)
【讨论】:
为什么不以编程方式创建这种关系?即,当您将 WPF 用户控件添加到元素宿主中时,将用户控件的 Tag 属性设置为元素宿主实例。
科林 E.
【讨论】:
我建议你
WPF child control的事件,EventArgs对象中设置值使父控件返回数据。除非在某些特殊情况下,否则应避免访问父控件。当想要设置从子到父的通信时,始终将事件从子容器传播到父容器。
【讨论】: