detect/detect.gui/Views/MainView.axaml.cs

82 lines
2.0 KiB
C#
Raw Normal View History

2024-11-13 17:09:15 +08:00
using System;
using Avalonia.Interactivity;
using detect.gui.Classes;
using detect.gui.ViewModels;
using detect.gui.Views;
using Avalonia;
using ReactiveUI;
using Avalonia.Controls.Primitives;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Threading;
namespace detect.gui.Views;
public partial class MainView : WindowBase<MainViewModel>
{
public WebBrowserWindow WebWindow { get; set; }
public MainView()
{
InitializeComponent();
WebWindow = new WebBrowserWindow();
this.WhenAnyValue(x => x.ViewModel).Subscribe(v =>
{
if (v == null) return;
v.Router.Navigate.Execute(new LoginViewModel());
});
this.WhenAnyValue(x => x.WindowState).Subscribe(s =>
{
Dispatcher.UIThread.InvokeAsync(() =>
{
// if (s == WindowState.Minimized || !(DataContext as MainViewModel)!.IsHomeView)
// WebWindow.Hide();
// if (s != WindowState.Minimized && (DataContext as MainViewModel)!.IsSettingsView && !WebWindow.IsVisible)
// WebWindow.Show();
});
});
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
#if DEBUG
this.AttachDevTools();
#endif
}
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{
base.OnApplyTemplate(e);
NotificationService.SetHostWindow(this);
}
private void MinClick(object? sender, RoutedEventArgs e)
{
WindowState = WindowState.Minimized;
}
private void MaxClick(object? sender, RoutedEventArgs e)
{
WindowState = WindowState.Maximized;
}
private void RestoreClick(object? sender, RoutedEventArgs e)
{
WindowState = WindowState.Normal;
}
private void CloseClick(object? sender, RoutedEventArgs e)
{
Close();
}
private void OnClosing(object? sender, WindowClosingEventArgs e)
{
WebWindow.Close();
}
}