2025-01-13 12:37:55 +08:00
|
|
|
using Avalonia;
|
2025-09-29 01:33:18 +08:00
|
|
|
using Avalonia.Controls;
|
2025-01-13 12:37:55 +08:00
|
|
|
using Avalonia.Controls.ApplicationLifetimes;
|
|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
2025-09-28 18:02:09 +08:00
|
|
|
using CommunityToolkit.Mvvm.Messaging;
|
2025-01-13 12:37:55 +08:00
|
|
|
|
|
|
|
|
namespace Semi.Avalonia.Demo.ViewModels;
|
|
|
|
|
|
2025-05-29 18:40:03 +08:00
|
|
|
public partial class ApplicationViewModel : ObservableObject
|
2025-01-13 12:37:55 +08:00
|
|
|
{
|
2025-09-29 01:33:18 +08:00
|
|
|
[RelayCommand]
|
|
|
|
|
private void Activate()
|
|
|
|
|
{
|
|
|
|
|
if (Application.Current?.ApplicationLifetime is not IClassicDesktopStyleApplicationLifetime desktop) return;
|
|
|
|
|
var mainWindow = desktop.MainWindow;
|
|
|
|
|
if (mainWindow is not null && !mainWindow.IsActive)
|
|
|
|
|
{
|
|
|
|
|
if (mainWindow.WindowState is WindowState.Minimized)
|
|
|
|
|
{
|
|
|
|
|
mainWindow.WindowState = WindowState.Normal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mainWindow.Activate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-28 18:02:09 +08:00
|
|
|
[RelayCommand]
|
|
|
|
|
private void JumpTo(string header)
|
|
|
|
|
{
|
2025-09-29 01:33:18 +08:00
|
|
|
Activate();
|
2025-09-28 18:02:09 +08:00
|
|
|
WeakReferenceMessenger.Default.Send(header, "JumpTo");
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-13 12:37:55 +08:00
|
|
|
[RelayCommand]
|
|
|
|
|
private void Exit()
|
|
|
|
|
{
|
|
|
|
|
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
|
|
|
|
{
|
|
|
|
|
desktop.Shutdown();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|