使用反应式UI时通过代码隐藏进行自动建议框(UWP)绑定
反应式UI文档建议使用代码隐藏绑定而不是XAML绑定,以避免内存泄漏。我正在尝试将视图模型中的SearchCommand绑定到AutoSuggestBox SearchView.xaml 但是,这不起作用,因此不会调用该命令。我还尝试绑定QuerySubmitted事件,但在下面的事件中找不到它。我使用了ReactiveUI.Events包 SearchView.xaml.cs使用反应式UI时通过代码隐藏进行自动建议框(UWP)绑定,uwp,reactiveui,Uwp,Reactiveui,反应式UI文档建议使用代码隐藏绑定而不是XAML绑定,以避免内存泄漏。我正在尝试将视图模型中的SearchCommand绑定到AutoSuggestBox SearchView.xaml 但是,这不起作用,因此不会调用该命令。我还尝试绑定QuerySubmitted事件,但在下面的事件中找不到它。我使用了ReactiveUI.Events包 SearchView.xaml.cs 我没有尝试直接绑定命令,但通常我绑定到属性,然后监听更改 this.Bind(ViewModel, viewModel
我没有尝试直接绑定命令,但通常我绑定到属性,然后监听更改
this.Bind(ViewModel,
viewModel => viewModel.SearchTerm,
view => view.SearchBox);
然后在视图模型中
private string _searchTerm;
public string SearchTerm
{
get => _searchTerm;
set => this.RaiseAndSetIfChanged(ref _searchTerm, value);
}
然后在构造函数内部
this.WhenAnyValue(x => x.SearchTerm).Subscribe(_ => SearchCommand());
这没有经过测试,甚至可能不是最好的方法,但我一直都是这样做的为了访问QuerySubmitted事件,您需要执行SearchBox.Events.QuerySubmitted。至于BindCommand,您可能必须显式地指定希望将命令绑定到哪个事件。您可以使用名为toEvent:nameofSearchBox.QuerySubmitted的可选字符串参数来执行此操作要访问QuerySubmitted事件,您需要执行SearchBox.Events.QuerySubmitted。至于BindCommand,您可能必须显式地指定希望将命令绑定到哪个事件。您可以使用名为toEvent:nameofSearchBox的可选字符串参数来实现这一点。QuerySubmitted@ColtBauman这是出于好奇,哪一个适合你?SearchBox.Events,另一个我还没试过。
this.Bind(ViewModel,
viewModel => viewModel.SearchTerm,
view => view.SearchBox);
private string _searchTerm;
public string SearchTerm
{
get => _searchTerm;
set => this.RaiseAndSetIfChanged(ref _searchTerm, value);
}
this.WhenAnyValue(x => x.SearchTerm).Subscribe(_ => SearchCommand());