У меня есть приложение Winforms (класс с именем Form_WinForms для примера), и я хочу добавить к нему элемент elementhost для размещения WPF Usercontrol (с именем Form_WPF).
Но я не знаю как обращаться с делегатами между ними: я хочу обменяться с элементами управления Form_WPF из Form_WinForms и наоборот. Как я мог сделать? Спасибо
В этом примере я просто хочу изменить текст текстового поля элемента управления (WPF technolog ie), щелкнув внутри кнопки Winforms.
В классе 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;
}