diff --git a/demo/Semi.Avalonia.Demo/App.axaml b/demo/Semi.Avalonia.Demo/App.axaml index c22351e..605631b 100644 --- a/demo/Semi.Avalonia.Demo/App.axaml +++ b/demo/Semi.Avalonia.Demo/App.axaml @@ -20,6 +20,14 @@ + + + + + - + + diff --git a/demo/Semi.Avalonia.Demo/ViewModels/ApplicationViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/ApplicationViewModel.cs index b91a492..0655629 100644 --- a/demo/Semi.Avalonia.Demo/ViewModels/ApplicationViewModel.cs +++ b/demo/Semi.Avalonia.Demo/ViewModels/ApplicationViewModel.cs @@ -2,11 +2,18 @@ using Avalonia; 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 JumpTo(string header) + { + 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