.NET MAUI 中 ViewModel 中的查询参数

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

在 Podcast 示例应用程序中,我看到查询参数直接在视图模型中接收 - 正如您在此处看到的:https://github.com/microsoft/dotnet-podcasts/blob/main/src/Mobile/ViewModels /EpisodeDetailViewModel.cs

我在我的视图模型中尝试了这个,但我没有得到任何值,即

null
。我目前通过代码隐藏来完成此操作,但我想直接在 ViewModel 中完成此操作。

这是我目前的方法:

MyPage.xaml.cs

[QueryProperty(nameof(Id), nameof(Id))]
public partial class MyPage: ContentPage
{
   public string Id { get; set; }
   MyPageViewModel _vm;
   public MyPage(MyPageViewModel vm)
   {
       InitializeComponent();
       _vm = vm;
       BindingContext = _vm;
   }

   protected override void OnAppearing()
   {
      base.OnAppearing();
      _vm.InitAsync(Id);
   }
}

MyPageViewModel.cs

public partial class MyPageViewModel : BaseViewModel
{
   IMyService _myService;
   public MyPageViewModel(IMyService myService)
   {
      _myService = myService;
   }

   public async void InitAsync(string id)
   {
      // Get data
      var data = await _myService.Get(id);
   }
}

我想简化方法并直接在视图模型中接收查询参数。

如何直接在视图模型中获取查询参数?

mvvm maui community-toolkit-mvvm
1个回答
0
投票

您可以使用MVVM工具包文档

[ObservableProperty]
private string? name;

partial void OnNameChanging(string? value)
{
    Console.WriteLine($"Name is about to change to {value}");
}

partial void OnNameChanged(string? value)
{
    Console.WriteLine($"Name has changed to {value}");
}
© www.soinside.com 2019 - 2024. All rights reserved.