У меня AutoSuggestBox
с видимостью Collapsed
. На той же странице просмотра у меня есть кнопка. При нажатии на кнопку я хочу показать AutoSuggestBox
. И когда запрос был отправлен или AutoSuggestBox
потерял фокус, я хочу снова скрыть его.
Вот AutoSuggestBox и кнопка:
<AutoSuggestBox Name="MainAutoSuggestBox"
Grid.Row="2"
GotFocus="MainAutoSuggestBox_GotFocus"
Visibility="Collapsed"
QueryIcon="Find"
QuerySubmitted="MainAutoSuggestBox_QuerySubmitted"
LostFocus="MainAutoSuggestBox_LostFocus"/>
<Button Name="TopBarSearchButton"
Content="Button"
Click="TopBarSearchButton_Click"/>
Мой код программной части:
class SomePage : page
{
...
...
private void MainAutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
{
//only for testing purposes
}
private void MainAutoSuggestBox_LostFocus(object sender, RoutedEventArgs e)
{
MainAutoSuggestBox.Visibility = Visibility.Collapsed;
//put focus on the page
this.Focus(FocusState.Programmatic);
}
private void MainAutoSuggestBox_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
{
//Do something
//Works fine
}
private void TopBarSearchButton_Click(object sender, RoutedEventArgs e)
{
HandleSearchButtonClick();
}
private void HandleSearchButtonClick()
{
if (MainAutoSuggestBox.Visibility == Visibility.Collapsed)
{
MainAutoSuggestBox.Visibility = Visibility.Visible;
MainAutoSuggestBox.Focus(FocusState.Programmatic);
}
else
{
MainAutoSuggestBox.Visibility = Visibility.Collapsed;
}
}
}
Теперь проблема в том, что когда я нажимаю кнопку TopBarSearchButton
в первый раз, видимость MainAutoSuggestBox
переключается, но фокус не устанавливается на MainAutoSuggestBox
. Но со второго раза он работает должным образом, то есть при нажатии кнопки видимость MainAutoSuggestBox
переключается, а фокус устанавливается на MainAutoSuggestBox
.
Во время отладки я обнаружил, что при первом нажатии кнопки поток управления достигает строки MainAutoSuggestBox.Focus(FocusState.Programmatic);
внутри HandleSearchButtonClick()
, но никогда не попадает в
private void MainAutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
метод, но со второго раза он попадает в
private void MainAutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
метод.
UWP
. - person lindexi   schedule 21.06.2017