我正在通过WPF对Caliburn.Micro和MVVM进行一些测试。我的应用程序有一个包含TabControl的AppView(WPF窗口)。在里面我加载我的视图(WPF UserControl)与其对应的Screen ViewModel在新的Tabs上(遵循SimpleMDI示例)。 现在我需要从我的viewmodel中显示一个对话框,我这样做:
var windowManager = new WindowManager();
var login = new ConfirmActionViewModel();
windowManager.ShowDialog(login);
这种方法的问题在于ShowDialog方法为整个应用程序创建视图模态(它阻止整个应用程序)。
我的问题
如何将此对话框模式仅用于活动视图?当我说模态时,我的意思是我需要阻止视图,直到用户点击我的ConfirmActionView的按钮。
我已经尝试过ModalContentPresenter类,但是Caliburn有一些问题,解决方案不像使用WindowManager那样干净。感谢!!!!
答案 0 :(得分:1)
针对您的具体问题,WindowManager
无法提供帮助。
在Windows(和WPF)中,模态意味着模态到应用程序的所有窗口。
因为这不是CM可以解决的问题。
您需要的是视图上的叠加层。 How to make overlay control above all other controls?
然后,您可以将叠加层的可见性绑定到viewmodel上的属性。