Дочерний (wpf usercontrol) вызов функции из Parent (winForm) - PullRequest
0 голосов
/ 12 января 2012

У меня есть Form1 (родитель), и у него есть elementHost (WPF usercontrol).Теперь я хочу, чтобы пользовательский контроль WPF вызывал функцию из своего родителя или передавал значение / данные.Все просто.

Это код, который я использую, но программа всегда дает сбой ..

Форма 1:

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

WPF userControl:

Form1 frm1 = new Form1();

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

Возможно ли, чтобы ребенок получил прямой доступ к своему родителю?

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Эта программа не может работать! Вы создаете новую форму Form1 в вашем пользовательском контроле Wpf. Form1 содержит этот пользовательский контроль ... Так что это бесконечный цикл!

Вы должны преобразовать свойство Parent elementhost, размещающего ваш пользовательский контроль WPF, в 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();
        }
    }
}
0 голосов
/ 12 января 2012

Вам нужно будет добавить родительский экземпляр в ваш элемент управления WPF.Затем, имея эту ссылку, вы можете манипулировать ею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...