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