58 lines
1.3 KiB
C#
58 lines
1.3 KiB
C#
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
using Microsoft.UI.Xaml.Navigation;
|
|
|
|
using RustTools.Contracts.Services;
|
|
using RustTools.muqing;
|
|
using RustTools.Views;
|
|
|
|
namespace RustTools.ViewModels;
|
|
|
|
public partial class ShellViewModel : ObservableRecipient
|
|
{
|
|
[ObservableProperty]
|
|
private bool isBackEnabled;
|
|
|
|
[ObservableProperty]
|
|
private object? selected;
|
|
|
|
public INavigationService NavigationService
|
|
{
|
|
get;
|
|
}
|
|
|
|
public INavigationViewService NavigationViewService
|
|
{
|
|
get;
|
|
}
|
|
|
|
public ShellViewModel(INavigationService navigationService, INavigationViewService navigationViewService)
|
|
{
|
|
NavigationService = navigationService;
|
|
NavigationService.Navigated += OnNavigated;
|
|
NavigationViewService = navigationViewService;
|
|
}
|
|
|
|
private void OnNavigated(object sender, NavigationEventArgs e)
|
|
{
|
|
|
|
GC.Collect();
|
|
IsBackEnabled = NavigationService.CanGoBack;
|
|
if (e.SourcePageType == typeof(SettingsPage))
|
|
{
|
|
Selected = NavigationViewService.SettingsItem;
|
|
return;
|
|
}
|
|
|
|
var selectedItem = NavigationViewService.GetSelectedItem(e.SourcePageType);
|
|
if (selectedItem != null)
|
|
{
|
|
Selected = selectedItem;
|
|
}
|
|
else
|
|
{
|
|
Selected = null;
|
|
}
|
|
}
|
|
}
|