我有一个带有QuerySubmitted属性的AutoSuggestBox,所以当我点击enter按钮时,它会搜索产品并在没有找到数据时显示错误信息,我的问题是当我多次输入时它会显示两次或多次
这是我的代码:
try {
if (!ViewModel.IsBusy) {
ViewModel.IsBusy = true;
await this.ViewModel.FindAsync(args.QueryText);
}
}
catch (Exception e) {
}
finally {
ViewModel.IsBusy = false;
}
答案 0 :(得分:1)
因为第二次调用你的函数会使bool变为false,因此第3次调用将进入if条件并将执行FindAsync()
相反,你可以这样做:
try {
if (!ViewModel.IsBusy) {
ViewModel.IsBusy = true;
await this.ViewModel.FindAsync(args.QueryText);
ViewModel.IsBusy = false;
}
}
catch (Exception e) {
ViewModel.IsBusy = false;
}
或者您可以真正使用Task Cancellation来获得更好的设计,如果在多个Enter键命中之间querytext中有更改,您将获得将最新的args.QueryText发送到FindAsync的好处。当然,如果您遇到新的呼叫,则需要取消之前的任务。