在 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工具包文档
[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}");
}