【发布时间】:2010-06-17 13:39:37
【问题描述】:
我的 wpf 应用程序出现问题,在主应用程序后面会出现一个模式对话框,导致它挂起。
这是非常不一致的,大多数时候弹出窗口正常工作并显示在前面,但偶尔会弹出后面,这会停止与它的任何交互。如果发生这种情况,我仍然可以使用任务栏关闭对话框。我注意到它通常发生在许多其他应用程序打开并且任务栏已满时。另外,我正在使用两个屏幕,问题只出现在带有任务栏的屏幕上 - 非常奇怪!
对话框是一个窗口控件,它包含一个注入的用户控件作为它的数据上下文。要在调用 ShowDialog() 之前设置窗口的所有者,使用应用程序中的第一个活动窗口而不是 Window.GetWindow(this):
private static Window GetOwner()
{
if (Application.Current != null)
{
var owner = Application.Current.Windows.Cast().FirstOrDefault(w => w.IsActive);
return owner ?? Application.Current.MainWindow;
}
return null;
}
对可能导致此问题的原因有任何想法吗?甚至如何尝试和跟踪它,以便在它发生时收集更多信息?
谢谢, 多纳尔
【问题讨论】:
-
刚刚赋值后“owner”的值是多少?是否始终如一?
标签: c# wpf user-controls modal-dialog