using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Navigation; using XFEWarframe.Admin.ViewModels; using XFEWarframe.Desktop.Editing; namespace XFEWarframe.Admin.Views; public sealed partial class EditorPage : Page { public EditorPageViewModel ViewModel { get; } = new(); private bool returningFromDetails; public EditorPage() { InitializeComponent(); DataContext = ViewModel; NavigationCacheMode = NavigationCacheMode.Enabled; EditDialogButton.Validating += (_, _) => { foreach (var field in ViewModel.Fields) field.Serialize(); }; ViewModel.NavigationParameters.Initialize(this); } protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); ViewModel.Attach(); if (e.NavigationMode == NavigationMode.Back && returningFromDetails) ViewModel.ResumeListCommand.Execute(null); else ViewModel.NavigationParameters.OnParameterChange(e.Parameter); returningFromDetails = false; } protected override void OnNavigatedFrom(NavigationEventArgs e) { returningFromDetails = e.SourcePageType == typeof(EquipmentPage); ViewModel.Detach(); base.OnNavigatedFrom(e); } private void ItemClicked(object sender, ItemClickEventArgs e) { if (e.ClickedItem is not EditorItem item) return; ViewModel.SelectedItem = item; ViewModel.EditItemCommand.Execute(null); } }