diff --git a/demo/Semi.Avalonia.Demo.Android/Icon.png b/demo/Semi.Avalonia.Demo.Android/Icon.png index b5694aa..fcc8847 100644 Binary files a/demo/Semi.Avalonia.Demo.Android/Icon.png and b/demo/Semi.Avalonia.Demo.Android/Icon.png differ diff --git a/demo/Semi.Avalonia.Demo.Android/Semi.Avalonia.Demo.Android.csproj b/demo/Semi.Avalonia.Demo.Android/Semi.Avalonia.Demo.Android.csproj index 1c08a69..ec5bdb0 100644 --- a/demo/Semi.Avalonia.Demo.Android/Semi.Avalonia.Demo.Android.csproj +++ b/demo/Semi.Avalonia.Demo.Android/Semi.Avalonia.Demo.Android.csproj @@ -14,9 +14,7 @@ - - Resources\drawable\Icon.png - + diff --git a/demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj b/demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj index a579f53..ef6119b 100644 --- a/demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj +++ b/demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj @@ -4,6 +4,7 @@ net8.0 enable true + ..\Semi.Avalonia.Demo\Assets\irihi.ico diff --git a/demo/Semi.Avalonia.Demo.Drm/Semi.Avalonia.Demo.Drm.csproj b/demo/Semi.Avalonia.Demo.Drm/Semi.Avalonia.Demo.Drm.csproj index 7006d63..bac5f20 100644 --- a/demo/Semi.Avalonia.Demo.Drm/Semi.Avalonia.Demo.Drm.csproj +++ b/demo/Semi.Avalonia.Demo.Drm/Semi.Avalonia.Demo.Drm.csproj @@ -4,6 +4,7 @@ net8.0 enable true + ..\Semi.Avalonia.Demo\Assets\irihi.ico diff --git a/demo/Semi.Avalonia.Demo/App.axaml b/demo/Semi.Avalonia.Demo/App.axaml index 472efd6..99f40c7 100644 --- a/demo/Semi.Avalonia.Demo/App.axaml +++ b/demo/Semi.Avalonia.Demo/App.axaml @@ -1,4 +1,5 @@ + + + + + - + - + + diff --git a/demo/Semi.Avalonia.Demo/Assets/irihi2.ico b/demo/Semi.Avalonia.Demo/Assets/irihi2.ico new file mode 100644 index 0000000..193bdcb Binary files /dev/null and b/demo/Semi.Avalonia.Demo/Assets/irihi2.ico differ diff --git a/demo/Semi.Avalonia.Demo/ViewModels/ApplicationViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/ApplicationViewModel.cs index b91a492..7a07dfc 100644 --- a/demo/Semi.Avalonia.Demo/ViewModels/ApplicationViewModel.cs +++ b/demo/Semi.Avalonia.Demo/ViewModels/ApplicationViewModel.cs @@ -1,12 +1,37 @@ using Avalonia; +using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; namespace Semi.Avalonia.Demo.ViewModels; public partial class ApplicationViewModel : ObservableObject { + [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(); + } + } + + [RelayCommand] + private void JumpTo(string header) + { + Activate(); + WeakReferenceMessenger.Default.Send(header, "JumpTo"); + } + [RelayCommand] private void Exit() { diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml.cs b/demo/Semi.Avalonia.Demo/Views/MainView.axaml.cs index 1d0a78d..fbc876b 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml.cs @@ -9,6 +9,7 @@ using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Styling; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; namespace Semi.Avalonia.Demo.Views; @@ -18,6 +19,19 @@ public partial class MainView : UserControl { InitializeComponent(); this.DataContext = new MainViewModel(); + WeakReferenceMessenger.Default.Register(this, "JumpTo", MessageHandler); + } + + private void MessageHandler(object _, string message) + { + foreach (var item in tab.ItemsView) + { + if (item is TabItem tabItem && tabItem.Header is not null && tabItem.Header.Equals(message)) + { + tab.SelectedItem = tabItem; + break; + } + } } } @@ -233,4 +247,4 @@ public class MenuItemViewModel public ICommand? Command { get; set; } public object? CommandParameter { get; set; } public IList? Items { get; set; } -} +} \ No newline at end of file