如何以 MVVM 方式实现此 TextChanged 事件处理程序?
How do I implement this TextChanged event handler the MVVM way?
如何以 MVVM 方式实现此事件处理程序?
我见过的其他解决方案是否在视图模型上实现了命令或 属性。但是,这意味着每个文本更改事件都会变成命令执行或 属性 集。但是这个事件处理程序会过滤掉除用户输入之外的所有内容。您将如何使用命令或 属性 绑定来做到这一点?
private async void SearchBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
{
if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
{
await this.ViewModel.RefreshAddressSuggestions(sender.Text);
}
}
How do I implement this TextChanged event handler the MVVM way?
根据您的要求,您可以将 Text
属性 与 ViewModel 绑定,并检查文本值更改以调用 RefreshAddressSuggestions
方法。
<AutoSuggestBox Text="{x:Bind SearchText, Mode=TwoWay}">
private string searchText;
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public string SearchText
{
get { return searchText; }
set
{
_passWord = value;
this.ViewModel.RefreshAddressSuggestions(value);
OnPropertyChanged();
}
}
如何以 MVVM 方式实现此事件处理程序?
我见过的其他解决方案是否在视图模型上实现了命令或 属性。但是,这意味着每个文本更改事件都会变成命令执行或 属性 集。但是这个事件处理程序会过滤掉除用户输入之外的所有内容。您将如何使用命令或 属性 绑定来做到这一点?
private async void SearchBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
{
if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
{
await this.ViewModel.RefreshAddressSuggestions(sender.Text);
}
}
How do I implement this TextChanged event handler the MVVM way?
根据您的要求,您可以将 Text
属性 与 ViewModel 绑定,并检查文本值更改以调用 RefreshAddressSuggestions
方法。
<AutoSuggestBox Text="{x:Bind SearchText, Mode=TwoWay}">
private string searchText;
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public string SearchText
{
get { return searchText; }
set
{
_passWord = value;
this.ViewModel.RefreshAddressSuggestions(value);
OnPropertyChanged();
}
}