6 wpf owner elementhost showdialog
是否可以从WPF用户控件显示模态窗口,它是ElementHost的子级,并将模态窗口的所有者/父级设置为包含的Form控件?
我猜你不能这样做,因为Owner属性采用了Window的一个实例,我想把它设置为Element Host控件的父级,这是一个旧的Windows Forms Form控件.只是想知道是否有解决方法或替代方法.
问题是当显示模态窗口并且用户切换到另一个应用程序,然后再返回时,模态窗口被隐藏,用户无法与主窗口交互.这是因为Windows认为模态窗口仍然显示,而不是,因为没有设置所有者/父关系.
干杯,詹姆斯.
我正在使用WindowInteropHelper来解决这个问题:
var wpfDialog = new MyWpfDialog();
var interopHelper = new WindowInteropHelper(wpfDialog)
{
Owner = winFormsDialog.Handle
};
wpfDialog.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
我知道这篇文章很旧,但我遇到了一种方法,可以从 wpf UserControl 的上下文中找到托管 ElementHost 的 winform 窗口,您可能无法访问 winform 窗口。我发现这很有用,这样我就不必传递主机窗口了。
HwndSource winformWindow = (System.Windows.Interop.HwndSource.FromDependencyObject(wpfControlInElementHost) as System.Windows.Interop.HwndSource);
if (winformWindow != null)
{
var interopHelper = new WindowInteropHelper(wpfWindow)
{
Owner = winformWindow.Handle
};
}
Run Code Online (Sandbox Code Playgroud)
小智 2
好的,刚刚使用 WindowInteropHelper 找到了解决方案。
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/44c903fb-9514-401c-ba85-58acd5293c1b
| 归档时间: |
|
| 查看次数: |
3906 次 |
| 最近记录: |