从Winforms ElementHost WPF UserControl设置WPF对话所有者

时间:2016-04-13 18:45:48

标签: c# wpf winforms

我有一个WinForms应用程序,我在ElementHost控件中托管WPF用户控件。从那个WPF UserControl我需要显示一个WPF对话框。虽然我可以创建WPF窗口并调用ShowDialog(),但我可以将对话框隐藏到"隐藏在"主应用程序。如何在此上下文中设置WPF对话框的所有者?

EntryDialog entryDialog = new entryDialog();
bool? ret = entryDialog.ShowDialog();
if (ret.Value == true)
{
}

1 个答案:

答案 0 :(得分:1)

获取所有者设置的技巧是访问底层的WinForms窗口并使用WPF WindowInteropHelper将它们全部拉到一起。

EntryDialog entryDialog = new entryDialog();
HwndSource source = (HwndSource)HwndSource.FromVisual(this);
new System.Windows.Interop.WindowInteropHelper(entryDialog).Owner = source.Handle;
bool? ret = entryDialog.ShowDialog();
if (ret.Value == true)
{
}

对于HwndSource,您还需要:

using System.Windows.Interop

此XAML减少了任务栏的混乱

ShowInTaskbar="False"