gpt4 book ai didi

wpf - 如何从 ViewModel 访问 MetroWindow 的 ShowMessageAsync 方法

转载 作者:行者123 更新时间:2023-12-03 10:35:45 27 4
gpt4 key购买 nike

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

最佳答案

使用以下方法:

  • 采取Action<T> ShowMessageAsync在您的 ViewModel您正在与窗口绑定(bind)。
  • 现在为 Window 创建一个行为并在行为中使用以下代码
    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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com