我使用elementhost在Windows窗体中托管WPF用户控件。我想知道如何在WPF控件中引用父窗体。
答案 0 :(得分:16)
这是一种方法,在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
)的别名
答案 1 :(得分:3)
为什么不以编程方式创建此关系?即,当您将WPF用户控件添加到元素主机时,请将用户控件的Tag属性设置为元素主机实例。
Colin E。
答案 2 :(得分:2)
我建议你
WPF child control
,EventArgs
对象中的值来使父控件返回数据。除非在某些特殊情况下,否则应避免访问父控件。当想要设置从子级到父级的通信时,始终将子事件从子级传播到父容器。