MahApps Merry Men 的简单问题。我已经使用您出色的 Metro 风格控件实现了一个应用程序,使用 Caliburn.Micro 作为 MVVM 的东西。新的消息对话框看起来很棒,但目前还没有明确的方式来启动这些对话框而不编写我自己的包装器(我不反对)。但是,这是否已完成或是否缺少某些东西以便我可以毫不费力地从 View 模型调用消息框?
感谢您的宝贵时间。
最佳答案
从 1.1.3-ALPHA*(成为 1.2.0)开始,MahApps 提供了一个帮助程序来从 VM 启动对话框,它在多窗口设置中工作:
1) 在您的 Window 中使用附加属性向对话框子系统注册您的 View 模型。
假设您的 View 的 DataContext 设置为您要从中启动对话框的 View 模型,请添加以下属性:
<Controls:MetroWindow
xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
Dialog:DialogParticipation.Register="{Binding}">
2) 获取/注入(inject) DialogCoordinator:
new MainWindowViewModel(DialogCoordinator.Instance);
3) 从 View 模型中显示您的对话框。使用“this”作为上下文,以便 MahApps 可以将您的 View 模型与正确的窗口结合起来:
_dialogCoordinator.ShowMessageAsync(this, "Message from VM", "MVVM based dialogs!")
关于c# - 使用 MVVM 的 MahApps 消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22083213/