Wpf 如何从ViewModel访问MetroWindow的ShowMessageAsync方法
我正在将MahApps.metro WPF库与MVVM一起使用。我有一个ViewModel,需要从中显示一个对话框。MetroWindow具有ShowMessageAsync。但是,从ViewModel访问它的正确方法是什么?据我所知,我需要一个视图实例,但将其传递到ViewModel中似乎不是一个好方法。使用以下方法:Wpf 如何从ViewModel访问MetroWindow的ShowMessageAsync方法,wpf,mvvm,viewmodel,mahapps.metro,Wpf,Mvvm,Viewmodel,Mahapps.metro,我正在将MahApps.metro WPF库与MVVM一起使用。我有一个ViewModel,需要从中显示一个对话框。MetroWindow具有ShowMessageAsync。但是,从ViewModel访问它的正确方法是什么?据我所知,我需要一个视图实例,但将其传递到ViewModel中似乎不是一个好方法。使用以下方法: 在与窗口绑定的视图模型中执行操作ShowMessageAsync 现在为窗口创建一个行为,并在行为中使用以下代码 protected override void OnAttac
视图模型
中执行操作
ShowMessageAsync
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.
}
main窗口的ViewModel
,您将能够打开另一个子窗口。可能重复的