C# 如何在Winforms窗体和Winforms窗体中elementhost托管的WPF Usercontrol之间使用委托?

C# 如何在Winforms窗体和Winforms窗体中elementhost托管的WPF Usercontrol之间使用委托?,c#,wpf,winforms,delegates,elementhost,C#,Wpf,Winforms,Delegates,Elementhost,我有一个Winforms应用程序(例如名为Form_Winforms的类),我想向它添加一个elementhost控件,以便托管一个WPF用户控件(名为Form_WPF) 但是我不知道如何处理它们之间的委托:我想与来自表单的表单WPF控件交换,反之亦然。我怎么办?谢谢 在本例中,我只想通过在Winforms按钮内单击来修改控件文本框(WPF technologie)的文本 在Winforms类中: // In Form_WinForms (my main form) private void

我有一个Winforms应用程序(例如名为Form_Winforms的类),我想向它添加一个elementhost控件,以便托管一个WPF用户控件(名为Form_WPF)

但是我不知道如何处理它们之间的委托:我想与来自表单的表单WPF控件交换,反之亦然。我怎么办?谢谢

在本例中,我只想通过在Winforms按钮内单击来修改控件文本框(WPF technologie)的文本

在Winforms类中:

// In Form_WinForms (my main form)

private void btn_Debug_Click(object sender, EventArgs e)
{
    // Form_WPF.GetInstance().Invoke(new ChangeTextBox_WPF(Form_WPF._ChangeTextBox_WPF), Form_WPF.GetInstance().TextBoxDebug, "test"); // what I would have done if Form_WPF was a WinForms form 
    Form_WPF.GetInstance().Dispatcher.Invoke(new ChangeTextBox_WPF(Form_WPF._ChangeTextBox_WPF), Form_WPF.GetInstance().TextBoxDebug, "test");
}
在WPF类中:

// In the Usercontrol Form_WPF (which is hosted by an elementhost in Winforms)

private delegate void ChangeTextBox_WPF(System.Windows.Controls.TextBox TextBox, String texte);
public static void _ChangeTextBox_WPF(System.Windows.Controls.TextBox TextBox, String texte) { TextBox.Text = texte; TextBox.Tag = texte; }

private static Form_WPF _Form_WPF;

public static Form_WPF GetInstance()
{
    if (_Form_WPF == null)
    {
        _Form_WPF = new Form_WPF();
    }
    return _Form_WPF;
}

ElementHost
子属性强制转换为WPF控件类型,例如:

Form_WPF wpfControl = elementHost.Host as Form_WPF;

然后,您可以像往常一样访问托管实例的任何成员。

您好,我的elementhost的
子属性已形成\u WPF,当我按下Winforms调试按钮时,委托函数
\u ChangeTextBox\u WPF
将触发,但是WPF文本框的文本没有改变,可能是因为您设置了错误实例的
text
属性。清除所有静电物质。你不需要它。如果我删除它,我会在
Form_WPF.GetInstance().Dispatcher.Invoke(new ChangeTextBox_WPF(Form_WPF.\u ChangeTextBox_WPF),Form_WPF.GetInstance().TextBoxDebug,“test”):“非静态字段、方法或属性‘Form_WPF.GetInstance()’需要对象引用。是否删除该行并尝试我的示例代码?”?同样,您应该强制转换承载WPF控件的
ElementHost
控件的
子属性。如果有其他问题,请提出新问题。避免在评论中进行冗长的讨论。