无论如何以编程方式关闭自动完成框的下拉列表?我的用例如下。
MainPage.xaml 将值传递给 SearchPage.xaml(即 /SearchPage.xaml?query=someText)。
在 SearchPage.xaml.cs 中,我设置,
autoCompleteBox.Text = NavigationContext.QueryString["query"].
此时,建议匹配的下拉列表出现。当页面刚刚导航到时,我不希望出现这种行为。
我还尝试了以下方法来关闭下拉列表,但没有帮助。
autoCompleteBox.Text = NavigationContext.QueryString["query"];
autoCompleteBox.IsDropDownOpen = false;
下拉列表在失去焦点时似乎远离 AutoCompleteBox,但我没有看到要设置的属性/字段以使其失去焦点。
任何帮助表示赞赏。
好吧,我稍微修改了一下,想出了一个kludge。在 SearchPage.xaml.cs 的构造函数中,我有以下代码。
autoCompleteBox.TextFilter += DummyFilter;
autoCompleteBox.GotFocus += (s,args) => {
if(!isAutoCompleteBoxInit) {
autoCompleteBox.TextFilter -= DummyFilter;
autoCompleteBox.TextFilter += RealFilter;
}
}
DummyFilter 如下所示。
bool DummyFilter(string search, string value) { return false; }
RealFilter 如下所示。
bool RealFilter(string search, string value) {
if(null != value) return value.ToLower().StartsWith(search.ToLower());
}
在我的 OnNavigatedTo 方法中,我设置了 autoCompleteBox.Text = NavigationContext.QueryString["query"]。所以当我现在这样做时,DummyFilter 将始终返回 false,因此下拉列表消失了。当用户专注于 AutoCompleteBox 时,我检查是否已将正确的过滤器附加到 TextFilter 属性,如果没有,则进行切换。
希望这对你们中的一些人有所帮助。