using SpaceEngineersBlueprintEditor.ViewModels; using XFEExtension.NetCore.WinUIHelper.Utilities; using XFEExtension.NetCore.WinUIHelper.Utilities.Helper; namespace SpaceEngineersBlueprintEditor.Views; /// /// ±à¼­Æ÷µÄShell²¼¾ÖÒ³Ãæ /// public sealed partial class AppShellPage : Page { public static AppShellPage? Current { get; set; } public AppShellPageViewModel ViewModel { get; set; } = new(); public AppShellPage() { PageManager.AddOrUpdateCurrentPage(Current = this); this.InitializeComponent(); App.MainWindow?.SetTitleBar(appTitleBar); ViewModel.NavigationViewService.Initialize(navigationView, navigationFrame); ViewModel.MessageService.Initialize(messageStackPanel, DispatcherQueue); ViewModel.LoadingService.Initialize(loadingGrid, globalLoadingGrid, globalLoadingTextBlock, DispatcherQueue, ViewModel.NavigationViewService.NavigationService); ViewModel.BackgroundImageService.Initialize(this, mainGrid); ViewModel.NavigationViewService.NavigateTo(); } private void NavigationView_DisplayModeChanged(NavigationView sender, NavigationViewDisplayModeChangedEventArgs args) { switch (sender.PaneDisplayMode) { case NavigationViewPaneDisplayMode.Auto: navigationView.Margin = new(); appTitleBar.Margin = new() { Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1), Top = appTitleBar.Margin.Top, Right = appTitleBar.Margin.Right, Bottom = appTitleBar.Margin.Bottom }; break; case NavigationViewPaneDisplayMode.Left: navigationView.Margin = new(); appTitleBar.Margin = new() { Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1), Top = appTitleBar.Margin.Top, Right = appTitleBar.Margin.Right, Bottom = appTitleBar.Margin.Bottom }; break; case NavigationViewPaneDisplayMode.Top: navigationView.Margin = new(0, 48, 0, 0); appTitleBar.Margin = new(16, 0, 0, 0); break; case NavigationViewPaneDisplayMode.LeftCompact: navigationView.Margin = new(); appTitleBar.Margin = new() { Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1), Top = appTitleBar.Margin.Top, Right = appTitleBar.Margin.Right, Bottom = appTitleBar.Margin.Bottom }; break; case NavigationViewPaneDisplayMode.LeftMinimal: navigationView.Margin = new(); appTitleBar.Margin = new() { Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1), Top = appTitleBar.Margin.Top, Right = appTitleBar.Margin.Right, Bottom = appTitleBar.Margin.Bottom }; break; default: break; } } private async void Page_Loaded(object sender, RoutedEventArgs e) { ViewModel.MessageService.ShowMessage("GameDefinitionsLoading".GetLocalized(), "Loading".GetLocalized()); AppThemeHelper.ChangeTheme(SystemProfile.Theme); navigationView.PaneDisplayMode = SystemProfile.NavigationStyle; SpaceEngineersHelper.LoadComplete += (sender, e) => ViewModel.MessageService?.ShowMessage("GameDefinitionsLoadingComplete".GetLocalized(), "Complete".GetLocalized(), InfoBarSeverity.Success); ; await SpaceEngineersHelper.LoadDefinitionViewDataListAsync(); } private void NavigationView_PaneOpening(NavigationView sender, object args) { rightPanelGrid.TranslationTransition = new(); rightPanelGrid.Translation = new((float)(sender.OpenPaneLength / 2 - sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 1f : 0.5f)) + rightPanelGrid.Translation.X, 0, 0); } private void NavigationView_PaneOpened(NavigationView sender, object args) { rightPanelGrid.TranslationTransition = null; rightPanelGrid.Translation = new(); rightPanelGrid.Margin = new() { Left = sender.OpenPaneLength, Top = 50 }; } private void NavigationView_PaneClosing(NavigationView sender, NavigationViewPaneClosingEventArgs args) { rightPanelGrid.TranslationTransition = new(); rightPanelGrid.Translation = new((float)(sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 1f : 0.5f) - sender.OpenPaneLength / 2) + rightPanelGrid.Translation.X, 0, 0); } private void NavigationView_PaneClosed(NavigationView sender, object args) { rightPanelGrid.TranslationTransition = null; rightPanelGrid.Translation = new(); rightPanelGrid.Margin = new() { Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1), Top = 50 }; } }