using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Input; using RustTools.Contracts.Services; using RustTools.Helpers; using RustTools.ViewModels; using Windows.System; namespace RustTools.Views; // TODO: Update NavigationViewItem titles and icons in ShellPage.xaml. public sealed partial class ShellPage : Page { public ShellViewModel ViewModel { get; } public ShellPage(ShellViewModel viewModel) { //< NavigationViewItem // x: Uid = "Shell_Main" // helpers: NavigationHelper.NavigateTo = "RustTools.ViewModels.MainViewModel"> // < NavigationViewItem.Icon > // < FontIcon FontFamily = "{StaticResource SymbolThemeFontFamily}" Glyph = "" /> // // 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; App.MainWindow.SetIcon(Path.Combine(AppContext.BaseDirectory, "Assets/WindowIcon.ico")); AppTitleBarText.Text = "app_name".GetLocalized() + " " + "app_version".GetLocalized(); } private void OnLoaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e) { //gj.sc(RequestedTheme); TitleBarHelper.UpdateTitleBar(RequestedTheme); KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.Left, VirtualKeyModifiers.Menu)); KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.GoBack)); } private void MainWindow_Activated(object sender, WindowActivatedEventArgs args) { 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(); var result = navigationService.GoBack(); args.Handled = result; } }