diff --git a/src/Calculator/Views/MainPage.xaml b/src/Calculator/Views/MainPage.xaml index c0febd59..80cc7026 100644 --- a/src/Calculator/Views/MainPage.xaml +++ b/src/Calculator/Views/MainPage.xaml @@ -168,6 +168,7 @@ PaneOpened="OnNavPaneOpened" PaneOpening="OnNavPaneOpening" SelectionChanged="OnNavSelectionChanged" + KeyDown="OnNavPaneKeyDown" TabIndex="1" UseSystemFocusVisuals="True" IsEnabled="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}" diff --git a/src/Calculator/Views/MainPage.xaml.cpp b/src/Calculator/Views/MainPage.xaml.cpp index 876ff72c..39840489 100644 --- a/src/Calculator/Views/MainPage.xaml.cpp +++ b/src/Calculator/Views/MainPage.xaml.cpp @@ -427,6 +427,22 @@ void MainPage::OnNavPaneClosed(_In_ MUXC::NavigationView ^ sender, _In_ Object ^ this->SetDefaultFocus(); } +void MainPage::OnNavPaneKeyDown(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::Input::KeyRoutedEventArgs ^ e) +{ + if (e->Key == VirtualKey::Space || e->Key == VirtualKey::Enter) + { + auto item = dynamic_cast(FocusManager::GetFocusedElement()); + if (item != nullptr && item->Name != L"About") + { + auto selectedItem = static_cast(item->DataContext); + Model->Mode = selectedItem->Mode; + + NavView->SelectedItem = item; + NavView->IsPaneOpen = false; + } + } +} + void MainPage::OnAboutButtonClick(Object ^ sender, ItemClickEventArgs ^ e) { ShowAboutPage(); diff --git a/src/Calculator/Views/MainPage.xaml.h b/src/Calculator/Views/MainPage.xaml.h index 88451d3b..e6748f0f 100644 --- a/src/Calculator/Views/MainPage.xaml.h +++ b/src/Calculator/Views/MainPage.xaml.h @@ -53,6 +53,7 @@ public void OnNavItemInvoked( Microsoft::UI::Xaml::Controls::NavigationView ^ /*sender*/, _In_ Microsoft::UI::Xaml::Controls::NavigationViewItemInvokedEventArgs ^ e); + void OnNavPaneKeyDown(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::Input::KeyRoutedEventArgs ^ e); void OnAboutButtonClick(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::Controls::ItemClickEventArgs ^ e); void OnAboutButtonKeyDown(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::Input::KeyRoutedEventArgs ^ e);