Caliburn Micro ShowDialog模式仅用于查看

本文关键字:用于 模式 Micro ShowDialog Caliburn | 更新日期: 2023-09-27 17:59:59

我正在通过WPF对Caliburn.Micro和MVVM进行一些测试。我的应用程序有一个包含TabControl的AppView(WPF窗口)。在其中,我将视图(WPF UserControl)及其相应的屏幕视图模型加载到新的选项卡上(遵循SimpleMDI示例)。现在我需要从我的视图模型中显示一个对话框,我这样做:

var windowManager = new WindowManager();
var login = new ConfirmActionViewModel();
windowManager.ShowDialog(login);

这种方法的问题是ShowDialog方法为整个应用程序创建视图Modal(它会阻塞整个应用程序)。

我的问题

如何使此对话框仅对活动视图具有模态?当我说modal时,我的意思是我需要阻止视图,直到用户点击我的ConfirmActionView的按钮。

我已经尝试过ModalContentPresenter类,但Caliburn有一些问题,解决方案不如使用WindowManager干净。谢谢

Caliburn Micro ShowDialog模式仅用于查看

对于您的特定问题,WindowManager没有帮助。在Windows(和WPF)中,模态意味着应用程序的所有窗口都是模态的。因为这不是CM可以开箱即用解决的问题。

你需要的是在你的视图上叠加。如何使覆盖控件高于所有其他控件?

然后,您可以将覆盖的可见性绑定到视图模型上的特性。