c# - 使用 MVVM 的 MahApps 消息框

标签 c# wpf mvvm caliburn.micro mahapps.metro

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/

相关文章:

wpf - 如何从代码中选择 TreeView 项目

c# - 同步多个 View 、编辑器和提交/取消

具有降序大小的 WPF 列表

WPF DataGrid 单个列内的不同编辑控件

c# - 在没有 MVVM 的情况下更新 LongListSelector ItemSource

c# - 锁定sql表中的记录

c# - 从另一个文件访问私有(private)类

c# - 缓存 ASHX 图像响应

c# - 使用 Unity 注入(inject)构造函数参数

.net - 解决方法 BeforeNavigate2 在 WPF .NET 中未触发