模拟搜索
在本页面上,您将为专辑搜索功能创建视图模型,然后将其绑定到新用户控件上的控件上。现在,您将使用模拟的搜索,以便专注于视图模型。
响应式视图模型
ReactiveUI 框架为 Avalonia UI 提供了对其数据绑定系统的支持。您可以通过从 ReactiveObject
类派生您的视图模型来添加此支持,这是通过在项目开始时由解决方案模板添加到您的项目中的 ViewModelBase
类实现的。
按照以下步骤从 ReactiveObject
类派生类:
- 找到并打开 MusicStoreViewModel.cs 文件。
- 添加代码以从
ViewModelBase
派生类。
namespace Avalonia.MusicStore.ViewModels
{
public class MusicStoreViewModel : ViewModelBase
{
}
}
这将为您的视图模型添加重要的扩展方法 RaiseAndSetIfChanged
,并允许您为其中的属性提供通知更改的能力。
信息
要了解 MVVM 模式和通知背后的概念,请参阅此处。
在这个阶段,您将为搜索应用程序逻辑创建两个属性:
- 一个文本字符串,作为搜索条件,
- 一个布尔值,指示搜索是否繁忙。
- 添加以下代码来实现上述属性:
using ReactiveUI;
namespace Avalonia.MusicStore.ViewModels
{
public class MusicStoreViewModel : ViewModelBase
{
private string? _searchText;
private bool _isBusy;
public string? SearchText
{
get => _searchText;
set => this.RaiseAndSetIfChanged(ref _searchText, value);
}
public bool IsBusy
{
get => _isBusy;
set => this.RaiseAndSetIfChanged(ref _isBusy, value);
}
}
}
您可以看到,这些属性具有正常的公共 getter,它返回私有值字段;但是 setter 调用了 RaiseAndSetIfChanged
方法,以实现通知。