【发布时间】:2013-01-29 12:18:54
【问题描述】:
我正在将 WPF 与当前最新最好的 Caliburn.Micro (1.4.1) 版本一起使用。我用IWindowManager.ShowWindow(...)打开一个新的无模式窗口:
private void OpenOrReactivateInfoView()
{
if(this.infoViewModel == null)
{
this.infoViewModel = new InfoViewModel();
}
this.windowManager.ShowWindow(this.infoViewModel);
}
不是每次调用OpenOrReactivateInfoView()时都打开一个新窗口,我想检查窗口是否仍然打开,如果是,现有窗口应该重新获得焦点。
我们有什么好的 Calibrun.Micro 方法来解决这个问题?我当然想避免在视图模型中保留对窗口(或任何 UIElement)本身的引用。另请注意,这是许多无模式对话框的常见行为,因此最好以通用的可重用方式解决此问题。
Caliburn.Micro 是否已经内置了这个功能?
【问题讨论】:
-
IsActive属性不够用? -
IsActive不会在关联窗口失去焦点或被最小化并且Screen.Activate()不会重新聚焦关联窗口时变为false。
标签: wpf caliburn.micro window-management