I have the following XAML excerpt :
<SplitView Name="Menu" DisplayMode="CompactOverlay" OpenPaneLength="200" CompactPaneLength="0" Grid.RowSpan="2">
<SplitView.Pane>
<StackPanel>
<AutoSuggestBox Margin="0,20,0,20" Width="170" PlaceholderText="Search" QueryIcon="Find"></AutoSuggestBox>
<ListBox>
<ListBoxItem Tapped="Projects_Tapped">
<StackPanel Orientation="Horizontal">
<SymbolIcon Symbol="Library" />
<TextBlock Margin="10,0,0,0">Projects</TextBlock>
</StackPanel>
</ListBoxItem>
[....]
</ListBox>
</StackPanel>
</SplitView.Pane>
</SplitView>
Basically, this splitview is compacted until the user presses a button which then sets the IsPaneOpen to true, which in turn shows my application menu.
The problem is, the very first thing i have in the menu is the search box and it seems to be getting focused automatically no matter what i do. The fact that it has focus then brings up the touch keyboard on phones, which is very annoying and hides most of the menu on small phones.
I tried playing with the TabIndex property to either give it a huge number or even put a lower index for something else.
I also tried setting the IsTabStop to false but that didn't seem to do anything.
Is there a clean way to prevent the box from gaining focus automatically? (Besides disabling / hiding the element and then enabling / showing it again)
You can try the following:
Give ListBox a name:
<ListBox Name="MyListBox">
Then, where you call IsPaneOpen to true, add the following line:
Menu.IsPaneOpen = true;
MyListbox.Focus(FocusState.Programmatic);
This would change the focus to the ListBox element and dismiss the keyboard when you open the SplitView.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With