private void NavView_ItemInvoked(Microsoft.UI.Xaml.Controls.NavigationView sender, Microsoft.UI.Xaml.Controls.NavigationViewItemInvokedEventArgs args) { //// Temp Workaround for WinUI Bug https://github.com/microsoft/microsoft-ui-xaml/issues/2520 var invokedItem = args.InvokedItem; if (invokedItem is FrameworkElement fe && fe.DataContext is SampleCategory cat2) { invokedItem = cat2; } //// End Workaround - args.InvokedItem // UNO TODO // force materialization FindName("SamplePickerGrid"); if (invokedItem is SampleCategory category) { if (SamplePickerGrid.Visibility != Visibility.Collapsed && _selectedCategory == category) { // The NavView fires this event twice when the current selected item is clicked // This makes sure the event get's processed correctly var nop = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => HideSamplePicker()); } else { _selectedCategory = category; ShowSamplePicker(category.Samples, true); // Then Focus on Picker dispatcherQueue.EnqueueAsync(() => SamplePickerGridView.Focus(FocusState.Keyboard)); } } }
private void SearchBox_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e) { if (e.Key == Windows.System.VirtualKey.Down && SamplePickerGrid.Visibility == Windows.UI.Xaml.Visibility.Visible) { // If we try and navigate down out of the textbox (and there's search results), go to the search results. DispatcherHelper.ExecuteOnUIThreadAsync(() => SamplePickerGridView.Focus(FocusState.Keyboard)); } }
private void SamplePickerGridView_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e) { SamplePickerGrid.RegisterPropertyChangedCallback(UIElement.VisibilityProperty, (s, args) => { if (s is UIElement samplePicker && samplePicker.Visibility == Visibility.Visible) { DispatcherHelper.ExecuteOnUIThreadAsync(() => SamplePickerGridView.Focus(FocusState.Keyboard)); } });
private void NavView_ItemInvoked(Microsoft.UI.Xaml.Controls.NavigationView sender, Microsoft.UI.Xaml.Controls.NavigationViewItemInvokedEventArgs args) { if (args.InvokedItem is SampleCategory category) { if (SamplePickerGrid.Visibility != Visibility.Collapsed && _selectedCategory == category) { // The NavView fires this event twice when the current selected item is clicked // This makes sure the event get's processed correctly var nop = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => HideSamplePicker()); } else { _selectedCategory = category; ShowSamplePicker(category.Samples, true); // Then Focus on Picker dispatcherQueue.EnqueueAsync(() => SamplePickerGridView.Focus(FocusState.Keyboard)); } } }
private async void UpdateSearchSuggestions(bool focus = false) { if (string.IsNullOrWhiteSpace(SearchBox.Text)) { HideSamplePicker(); return; } var samples = (await Samples.FindSamplesByName(SearchBox.Text)).OrderBy(s => s.Name).ToArray(); if (samples.Count() > 0) { ShowSamplePicker(samples); if (focus) { SamplePickerGridView.Focus(FocusState.Keyboard); } } else { HideSamplePicker(); } }
private void NavView_ItemInvoked(Microsoft.UI.Xaml.Controls.NavigationView sender, Microsoft.UI.Xaml.Controls.NavigationViewItemInvokedEventArgs args) { //// Temp Workaround for WinUI Bug https://github.com/microsoft/microsoft-ui-xaml/issues/2520 var invokedItem = args.InvokedItem; if (invokedItem is FrameworkElement fe && fe.DataContext is SampleCategory cat2) { invokedItem = cat2; } //// End Workaround - args.InvokedItem if (invokedItem is SampleCategory category) { if (SamplePickerGrid.Visibility != Visibility.Collapsed && _selectedCategory == category) { // The NavView fires this event twice when the current selected item is clicked // This makes sure the event get's processed correctly var nop = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => HideSamplePicker()); } else { _selectedCategory = category; ShowSamplePicker(category.Samples, true); // Then Focus on Picker DispatcherHelper.ExecuteOnUIThreadAsync(() => SamplePickerGridView.Focus(FocusState.Keyboard)); } } else if (args.IsSettingsInvoked) { HideSamplePicker(); if (NavigationFrame.CurrentSourcePageType != typeof(About)) { NavigateToSample(null); } } }