using CommunityToolkit.Mvvm.ComponentModel; using HaloPixelToolBox.Backend.Utilities; using Microsoft.UI.Xaml.Navigation; using XFEExtension.NetCore.WinUIHelper.Interface.Services; using XFEExtension.NetCore.WinUIHelper.Utilities; namespace HaloPixelToolBox.Backend.ViewModels; public partial class AppShellPageViewModel : ViewModelBase { [ObservableProperty] public partial bool CanGoBack { get; set; } [ObservableProperty] public partial string UserName { get; set; } = "未登录"; public IDialogService DialogService { get; set; } = ServiceManager.GetService(); public INavigationViewService NavigationViewService { get; set; } = ServiceManager.GetService(); public IMessageService MessageService { get; set; } = ServiceManager.GetService(); public ILoadingService LoadingService { get; set; } = ServiceManager.GetService(); public AppShellPageViewModel() { NavigationViewService.NavigationService.Navigated += NavigationService_Navigated; AdministratorSessionManager.StateChanged += AdministratorSessionManager_StateChanged; _ = InitializeAdministratorSessionAsync(); } private async Task InitializeAdministratorSessionAsync() { await AdministratorSessionManager.InitializeAsync(); UserName = AdministratorSessionManager.DisplayName; } private void AdministratorSessionManager_StateChanged(object? sender, EventArgs e) => UserName = AdministratorSessionManager.DisplayName; private void NavigationService_Navigated(object? sender, NavigationEventArgs e) => CanGoBack = NavigationViewService.NavigationService.CanGoBack; }