Reputation: 711
I have an AutoSuggestBox
which is only shown when I click a button. When the AutoSuggestBox
becomes visible it should also receive focus.
I tried many ways but none of them worked.
The code I have:
<AutoSuggestBox x:Name="AutoSearchBar"
HorizontalAlignment="Right"
VerticalAlignment="Center"
PlaceholderText="Text to find"
Visibility="Collapsed"/>
<Button x:Name="searchButton"
Visibility="Visible"
HorizontalAlignment="Right"
FontFamily="Segoe MDL2 Assets"
Background="Red"
Content=""
Click="searchButton_Click"/>
Code Behind:
private void searchButton_Click(object sender, RoutedEventArgs e)
{
AutoSearchBar.Visibility = Visibility.Visible;
searchButton.Visibility = Visibility.Collapsed;
}
I tried to put this in code-behind searchButton_Click
, but the AutoSearchBar
control only appears and is not focused.
AutoSearchBar.Focus(FocusState.Keyboard);
AutoSearchBar.Focus(FocusState.Pointer);
AutoSearchBar.Focus(FocusState.Programmatic);
Upvotes: 1
Views: 2127
Reputation: 10015
Sometimes XAML for Windows 10 (and 8.1 RT) behaves oddly. Bringing in a small delay usually fixes it. I've tried to run it through a Task factory and it works on my machine (TM).
private void searchButton_Click(object sender, RoutedEventArgs e)
{
searchButton.Visibility = Visibility.Collapsed;
AutoSearchBar.Visibility = Visibility.Visible;
// slightly delay setting focus
Task.Factory.StartNew(
() => Dispatcher.RunAsync(CoreDispatcherPriority.Low,
() => AutoSearchBar.Focus(FocusState.Programmatic)));
}
Upvotes: 7