using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Windows.Input; using Avalonia.Media; using Avalonia.Media.Imaging; using Avalonia.Platform; using CommunityToolkit.Mvvm.ComponentModel; using ZTools.Models; using ZTools.Views; namespace ZTools.ViewModels; public partial class MainWindowItem : ObservableObject { private string itemIconName; [ObservableProperty] private Bitmap itemIcon; [ObservableProperty] private string itemName; public MainWindowItem(string itemIcon, string itemName) { this.itemIconName = itemIcon; var uri = itemIconName; var bitmap = new Bitmap(AssetLoader.Open(new Uri(uri))); this.itemIcon = bitmap; this.itemName = itemName; } } public partial class MainWindowViewModel : ViewModelBase { [ObservableProperty] private ObservableCollection _menuItems = new ObservableCollection() { new MainWindowItem("avares://ZTools/Assets/Menu/个人.png","个人"), new MainWindowItem("avares://ZTools/Assets/Menu/首页.png","首页"), new MainWindowItem("avares://ZTools/Assets/Menu/消息.png","消息"), new MainWindowItem("avares://ZTools/Assets/Menu/功能.png","功能"), new MainWindowItem("avares://ZTools/Assets/Menu/其他.png","其他"), new MainWindowItem("avares://ZTools/Assets/Menu/其他.png","Test"), }; private MainWindowItem selectedMenuItem; public MainWindowItem SelectedMenuItem { get => selectedMenuItem; set { selectedMenuItem = value; // this.RaiseAndSetIfChanged(ref selectedMenuItem, value); OnSelectedItemChanged(); } } private void OnSelectedItemChanged() { if (selectedMenuItem!= null) { Log.Debug($"Selected item in ViewModel: {selectedMenuItem.ItemName}"); switch (selectedMenuItem.ItemName) { case "个人": new SettingWindow().Show(); break; case "首页": new SettingWindow().Show(); break; case "消息": new SettingWindow().Show(); break; case "功能": new SettingWindow().Show(); break; case "其他": new SettingWindow().Show(); break; case "设置": new SettingWindow().Show(); break; case "Test": new TestWindow().Show(); break; default: throw new NullReferenceException(); break; } } else { Log.Debug("No item selected in ViewModel"); } } [ObservableProperty] private ObservableCollection _leftDownItems = new ObservableCollection() { new MainWindowItem("avares://ZTools/Assets/Menu/设置.png","设置"), }; }