我正在使用带有 MVVM 的 MahApps.metro WPF 库。我有一个 ViewModel,我需要从中显示一个对话框。 MetroWindow 有 ShowMessageAsync。但是从 ViewModel 访问它的正确方法是什么?据我了解,我需要一个 View 实例,但将其传递给 ViewModel 似乎不是一个好方法。
最佳答案
使用以下方法:
Action<T>
ShowMessageAsync
在您的 ViewModel
您正在与窗口绑定(bind)。 protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.Loaded += AssociatedObject_Loaded;
}
void AssociatedObject_Loaded(object sender, RoutedEventArgs e)
{
if (this.AssociatedObject.DataContext is WindowViewModel)
{
WindowViewModel vm = this.AssociatedObject.DataContext as WindowViewModel;
vm.ShowMessageAsync = OnShowMessageAsync;
}
}
private void OnShowMessageAsync(T param)
{
//Write your logic to call ShowMessageAsync method.
}
现在以这种方式,从
ViewModel
您的MainWindow
您将能够打开另一个子窗口。
关于wpf - 如何从 ViewModel 访问 MetroWindow 的 ShowMessageAsync 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224624/