Есть ли способ программно закрыть выпадающий список автозаполнения? Мой вариант использования выглядит следующим образом.
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, когда он теряет фокусы, но я не вижу свойства / поля, которые можно было бы установить, чтобы он потерял фокус.
любая помощь приветствуется.
ну, я немного повозился и придумал клудж в конструкторе 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, если нет, тогда я делаю переключение.
надеюсь, это поможет некоторым из вас.