触发QuerySubmitted一次

时间:2017-05-18 06:34:05

标签: c# uwp

我有一个带有QuerySubmitted属性的AutoSuggestBox,所以当我点击enter按钮时,它会搜索产品并在没有找到数据时显示错误信息,我的问题是当我多次输入时它会显示两次或多次

这是我的代码:

        try {
            if (!ViewModel.IsBusy) {
                ViewModel.IsBusy = true;
                await this.ViewModel.FindAsync(args.QueryText);
            }
        }
        catch (Exception e) {
        }
        finally { 
            ViewModel.IsBusy = false;
        }

1 个答案:

答案 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的好处。当然,如果您遇到新的呼叫,则需要取消之前的任务。