我有Form1(父级),它有一个elementHost(WPF usercontrol)。现在,我希望WPF用户控件从其父级调用函数或传递值/数据。就这么简单。
这是我正在使用的代码,但程序总是崩溃..
Form1中:
public void samp()
{
MessageBox.Show("Sample");
}
WPF userControl:
Form1 frm1 = new Form1();
public void test()
{
frm1.samp();
}
孩子可以直接访问它的父母吗?
答案 0 :(得分:4)
此程序无法工作!您在Wpf用户控件中创建一个新的Form1。 Form1包含这个用户控件......所以这是一个无限循环!
您必须将托管WPF用户控件的elementhost的Parent
属性转换为Form1
,然后您可以调用您的函数,如下所示:
HwndSource wpfHandle = PresentationSource.FromVisual(this) as HwndSource;
if (wpfHandle != null)
{
ElementHost host = System.Windows.Forms.Control.FromChildHandle(wpfHandle.Handle) as ElementHost;
if (host != null)
{
Form1 form1 = host.Parent as Form1;
if (form1 != null)
{
form1.samp();
}
}
}
答案 1 :(得分:0)
您必须将父级实例注入WPF控件。然后有了这个参考,你可以用它来操纵。