Catel v4.0中的单实例窗口

Catel v4.0中的单实例窗口,catel,Catel,如果我有一个按钮(绑定到命令“OpenOtherWindow”)可以通过使用IUIVisualizerService.Show(viewModel)打开数据窗口,我如何防止打开所述数据窗口的另一个实例 我不认为创建单例ViewModel是正确的方法,在我的“OpenOtherWindow”命令所在的ViewModel中使用布尔值“IsWindowOpen”将不是非常MVVM,尽管这是我们目前的做法 在Catel中我该如何做呢?关键是创建一个管理windows状态和实例的服务。这样你就不必担心实际

如果我有一个按钮(绑定到命令“OpenOtherWindow”)可以通过使用IUIVisualizerService.Show(viewModel)打开数据窗口,我如何防止打开所述数据窗口的另一个实例

我不认为创建单例ViewModel是正确的方法,在我的“OpenOtherWindow”命令所在的ViewModel中使用布尔值“IsWindowOpen”将不是非常MVVM,尽管这是我们目前的做法


在Catel中我该如何做呢?

关键是创建一个管理windows状态和实例的服务。这样你就不必担心实际的行为,可以在一个地方改变它

然后您可以调用以下(伪)代码:


在该服务中,您可以跟踪窗口是否已打开,如果未打开,则打开窗口。如果您想在将来更改此行为,您只需在一个位置执行此操作:服务。

有趣。IVisualizerService是创建这样一个定制服务的好接口,还是我必须从头开始?从头开始,如果需要,在内部使用IVisualizerService来显示窗口。
_myFeatureService.Show();