仅适用于View的Caliburn Micro ShowDialog模态

时间:2014-04-24 14:52:21

标签: c# wpf mvvm caliburn.micro

我正在通过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那样干净。感谢!!!!

1 个答案:

答案 0 :(得分:1)

针对您的具体问题,WindowManager无法提供帮助。 在Windows(和WPF)中,模态意味着模态到应用程序的所有窗口。 因为这不是CM可以解决的问题。

您需要的是视图上的叠加层。 How to make overlay control above all other controls?

然后,您可以将叠加层的可见性绑定到viewmodel上的属性。