在 ViewModel 之间发送数据 | MVVM | .net 毛伊岛

问题描述 投票:0回答:1

我正在使用 .net Maui 构建一个应用程序(该应用程序适用于 android 和 windows),但我没有移动开发经验😅

我想知道如何在 2 个 ViewModel 之间传递数据(对象)。

实际上我使用 MessagingCenter 从 ViewModel A 发送数据并在 ViewModel B 中订阅,但我不知道这是最好的方法。

在第一个版本中,我使用视图中定义的参数在 ViewModel 类的构造函数中发送数据,但我在视图和视图模型之间生成依赖关系

.net mobile mvvm maui
1个回答
0
投票

使用 Shell Navigation,您可以在 ViewModel 之间传递和接收基元/对象数据。我给你留一个小例子:

第一个 ViewModel 中的第 1 步(传递数据):

public void GoToPage2() {

    var navigationParameters = new Dictionary<string, object>
    {
        { "Yourkey", YourObject },
    };

    await Shell.Current.GoToAsync(nameof(Page2),false,navigationParameters);
}

第二个ViewModel中的第2步(接收数据):

public class Page2ViewModel : INotifyPropertyChanged,IQueryAttributable {

  public YourObjectType YourObject { get; private set; }
    
  public void ApplyQueryAttributes(IDictionary<string, object> query)
    {
        YourObject = query["YourKey"] as YourObjectType;
        OnPropertyChanged("YourObject");
    }
    
}

重要提示:在类中使用 IQueryAttributable。

这里的文档对我有帮助。 .NET MAUI Shell 导航

© www.soinside.com 2019 - 2024. All rights reserved.