AvaloniaTool/ZTools/ViewModels/MainWindowViewModel.cs

93 lines
2.9 KiB
C#

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<MainWindowItem> _menuItems = new ObservableCollection<MainWindowItem>()
{
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","其他"),
};
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;
default:
throw new NullReferenceException();
break;
}
}
else
{
Log.Debug("No item selected in ViewModel");
}
}
[ObservableProperty]
private ObservableCollection<MainWindowItem> _leftDownItems = new ObservableCollection<MainWindowItem>()
{
new MainWindowItem("avares://ZTools/Assets/Menu/设置.png","设置"),
};
}