mirror of
https://github.com/PacktPublishing/Learn-WinUI-3-Second-Edition.git
synced 2026-06-20 12:23:09 +00:00
Add chapter 10 sample project
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Input;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
|
||||
using TemplateStudioSampleApp.Contracts.Services;
|
||||
using TemplateStudioSampleApp.Helpers;
|
||||
using TemplateStudioSampleApp.ViewModels;
|
||||
|
||||
using Windows.System;
|
||||
|
||||
namespace TemplateStudioSampleApp.Views;
|
||||
|
||||
// TODO: Update NavigationViewItem titles and icons in ShellPage.xaml.
|
||||
public sealed partial class ShellPage : Page
|
||||
{
|
||||
public ShellViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public ShellPage(ShellViewModel viewModel)
|
||||
{
|
||||
ViewModel = viewModel;
|
||||
InitializeComponent();
|
||||
|
||||
ViewModel.NavigationService.Frame = NavigationFrame;
|
||||
ViewModel.NavigationViewService.Initialize(NavigationViewControl);
|
||||
|
||||
// TODO: Set the title bar icon by updating /Assets/WindowIcon.ico.
|
||||
// A custom title bar is required for full window theme and Mica support.
|
||||
// https://docs.microsoft.com/windows/apps/develop/title-bar?tabs=winui3#full-customization
|
||||
App.MainWindow.ExtendsContentIntoTitleBar = true;
|
||||
App.MainWindow.SetTitleBar(AppTitleBar);
|
||||
App.MainWindow.Activated += MainWindow_Activated;
|
||||
AppTitleBarText.Text = "AppDisplayName".GetLocalized();
|
||||
}
|
||||
|
||||
private void OnLoaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
|
||||
{
|
||||
TitleBarHelper.UpdateTitleBar(RequestedTheme);
|
||||
|
||||
KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.Left, VirtualKeyModifiers.Menu));
|
||||
KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.GoBack));
|
||||
}
|
||||
|
||||
private void MainWindow_Activated(object sender, WindowActivatedEventArgs args)
|
||||
{
|
||||
var resource = args.WindowActivationState == WindowActivationState.Deactivated ? "WindowCaptionForegroundDisabled" : "WindowCaptionForeground";
|
||||
|
||||
AppTitleBarText.Foreground = (SolidColorBrush)App.Current.Resources[resource];
|
||||
App.AppTitlebar = AppTitleBarText as UIElement;
|
||||
}
|
||||
|
||||
private void NavigationViewControl_DisplayModeChanged(NavigationView sender, NavigationViewDisplayModeChangedEventArgs args)
|
||||
{
|
||||
AppTitleBar.Margin = new Thickness()
|
||||
{
|
||||
Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1),
|
||||
Top = AppTitleBar.Margin.Top,
|
||||
Right = AppTitleBar.Margin.Right,
|
||||
Bottom = AppTitleBar.Margin.Bottom
|
||||
};
|
||||
}
|
||||
|
||||
private static KeyboardAccelerator BuildKeyboardAccelerator(VirtualKey key, VirtualKeyModifiers? modifiers = null)
|
||||
{
|
||||
var keyboardAccelerator = new KeyboardAccelerator() { Key = key };
|
||||
|
||||
if (modifiers.HasValue)
|
||||
{
|
||||
keyboardAccelerator.Modifiers = modifiers.Value;
|
||||
}
|
||||
|
||||
keyboardAccelerator.Invoked += OnKeyboardAcceleratorInvoked;
|
||||
|
||||
return keyboardAccelerator;
|
||||
}
|
||||
|
||||
private static void OnKeyboardAcceleratorInvoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args)
|
||||
{
|
||||
var navigationService = App.GetService<INavigationService>();
|
||||
|
||||
var result = navigationService.GoBack();
|
||||
|
||||
args.Handled = result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user