using System; using System.Linq; using AutoCat.Pages; using AutoCat.ViewModels; using Avalonia.Controls; using FluentAvalonia.UI.Controls; namespace AutoCat.Windows; public partial class MainWindow : Window { private readonly SettingsPage _settingsPage = new SettingsPage(); private readonly HistoryPage _historyPage = new HistoryPage(); public MainWindow() { InitializeComponent(); NavView.SelectionChanged += NavSelectionChanged; NavView.ItemInvoked += NavViewOnItemInvoked; NavView.SelectedItem = NavView.MenuItems.First(x => (x as NavigationViewItem)?.Tag?.ToString() == "History"); } private void NavViewOnItemInvoked(object? sender, NavigationViewItemInvokedEventArgs e) { switch (e.InvokedItemContainer.Tag) { case "Check": ShowCheckNumberDialog(); break; } } private void NavSelectionChanged(object? sender, NavigationViewSelectionChangedEventArgs args) { if (args.IsSettingsSelected) { NavView.Content = _settingsPage; } else if (args.SelectedItem is NavigationViewItem item) { switch (item.Tag) { case "History": break; case "Search": NavView.Content = _historyPage; break; } } } private async void ShowCheckNumberDialog() { var dialog = new ContentDialog() { Title = "Check new number", CloseButtonText = "Cancel" }; var dialogContent = new CheckNumberDialog(); dialog.Content = dialogContent; var dialogTask = dialog.ShowAsync(); if (dialogContent.DataContext is CheckNumberViewModel vm) { vm.AutoCloseEvent += (_, _) => { dialog.Hide(); Console.WriteLine($"Checked number: {vm.Vehicle?.Number}"); }; } await dialogTask; } }