我正在使用 .net Maui 构建一个应用程序(该应用程序适用于 android 和 windows),但我没有移动开发经验😅
我想知道如何在 2 个 ViewModel 之间传递数据(对象)。
实际上我使用 MessagingCenter 从 ViewModel A 发送数据并在 ViewModel B 中订阅,但我不知道这是最好的方法。
在第一个版本中,我使用视图中定义的参数在 ViewModel 类的构造函数中发送数据,但我在视图和视图模型之间生成依赖关系
使用 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 导航