如何从ViewModel访问MetroWindow的ShowMessageAsync方法

时间:2015-05-13 20:29:27

标签: wpf mvvm viewmodel mahapps.metro

我正在使用带有MVVM的MahApps.metro WPF库。我有一个ViewModel,我需要从中显示一个Dialog。 MetroWindow具有ShowMessageAsync。但是从ViewModel访问它的正确方法是什么?据我所知,我需要一个View实例,但将其传递给ViewModel并不是一个好方法。

1 个答案:

答案 0 :(得分:1)

使用以下方法:

  1. 在你绑定窗口的class Test { MyObj myObj = new MyObj(); public synchronized void test() { // doing my other stuff // accessing myObj } } 中取Action<T> ShowMessageAsync

  2. 现在为Window创建一个行为,并在行为中使用以下代码

    ViewModel
  3. 现在通过这种方式,您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可以打开另一个子窗口。