子(wpf usercontrol)从Parent调用函数(winForm)

时间:2012-01-12 13:56:02

标签: c# wpf user-controls

我有Form1(父级),它有一个elementHost(WPF usercontrol)。现在,我希望WPF用户控件从其父级调用函数或传递值/数据。就这么简单。

这是我正在使用的代码,但程序总是崩溃..

Form1中:

public void samp()
{
 MessageBox.Show("Sample");
}

WPF userControl:

Form1 frm1 = new Form1();

public void test()
{
 frm1.samp();
}

孩子可以直接访问它的父母吗?

2 个答案:

答案 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控件。然后有了这个参考,你可以用它来操纵。