首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF ShowDialog和ElementHost

WPF ShowDialog和ElementHost
EN

Stack Overflow用户
提问于 2009-09-07 02:53:57
回答 3查看 4.2K关注 0票数 7

是否可以从WPF用户控件( ElementHost的子控件)显示模式窗口,并将模式窗口的所有者/父级设置为包含的窗体控件?

我猜您不能这样做,因为Owner属性需要一个Window实例,而我希望将它设置为Element Host控件的父控件,这是一个旧的Windows窗体窗体控件。只是想知道是否有解决办法或替代方法。

问题是,当Modal窗口显示时,用户切换到另一个应用程序,然后再切换回来,Modal窗口被隐藏,用户无法与主窗口交互。这是因为Windows认为Modal窗口仍然显示,而实际上并没有显示,因为没有设置所有者/父关系。

干杯,詹姆斯。

EN

回答 3

Stack Overflow用户

发布于 2009-09-30 12:23:44

我正在使用WindowInteropHelper来解决这个问题,如下所示:

代码语言:javascript
复制
var wpfDialog = new MyWpfDialog();
var interopHelper = new WindowInteropHelper(wpfDialog)  
        {
            Owner = winFormsDialog.Handle
        };

wpfDialog.ShowDialog();
票数 9
EN

Stack Overflow用户

发布于 2011-03-03 08:12:45

我知道这篇文章很旧,但我偶然发现了一种方法,可以从wpf UserControl的上下文中找到托管ElementHost的winform窗口,其中您可能无法访问winform窗口。我发现这很有用,这样我就不必到处传递主机窗口了。

代码语言:javascript
复制
HwndSource winformWindow = (System.Windows.Interop.HwndSource.FromDependencyObject(wpfControlInElementHost) as System.Windows.Interop.HwndSource);
if (winformWindow != null)
{
   var interopHelper = new WindowInteropHelper(wpfWindow)
   {
      Owner = winformWindow.Handle
   };
}
票数 5
EN

Stack Overflow用户

发布于 2009-09-07 03:54:06

好的,我使用WindowInteropHelper找到了解决方案。

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/44c903fb-9514-401c-ba85-58acd5293c1b

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1387382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档