首页 > 解决方案 > 有没有办法在使用 AutoWireViewModel = "True" 时在 xaml 中引用 VM

问题描述

如您所见,我正在尝试一种在 MVVM 中使用 MahApp.Metro 显示自定义对话框的新方法。

我不能MahApps.Metro.Controls.Dialogs直接在 VM 中引用使用 dialogCoordinator.ShowMetroDialogAsync(..., BaseMetroDialog dialog, ...),因为BaseMetroDialog它是一个 UI 元素(破坏 MVVM)。

所以我尝试在 xaml 中定义我的自定义对话框,然后ShowMetroDialogAsync通过ObjectDataProvider. 但我不知道如何获得作为第一个参数DataContext(the VM)传递的参考。ObjectDataProvider.MethodParameters

图片

触发按钮ObjectDataProvider

图片

标签: wpfxamlmvvmprismmahapps.metro

解决方案


显示对话框的服务没有任何问题。这样,视图模型不知道视图,并且您不需要过于复杂的 xaml 构造。

或者,您使用 prism 的内置弹出系统和交互请求。


推荐阅读