【发布时间】:2020-02-14 13:42:32
【问题描述】:
我有一个 Winforms 应用程序(例如名为 Form_WinForms 的类),我想向它添加一个 elementhost 控件,以便托管一个 WPF 用户控件(名为 Form_WPF)。
但我不知道如何处理它们之间的委托:我想与 Form_WinForms 中的 Form_WPF 控件进行交换,反之亦然。我该怎么办?谢谢
在示例中,我只想通过单击 Winforms 按钮内部来修改控件文本框(WPF 技术)的文本。
在 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;
}
【问题讨论】:
标签: c# wpf winforms delegates elementhost