12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using Avalonia.Collections;
- using CommunityToolkit.Mvvm.Input;
- using System;
- using System.Collections.Generic;
- using System.Diagnostics.CodeAnalysis;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Input;
- namespace IViewModel.ViewModels
- {
- public sealed class MenuViewModel:ViewModelBase
- {
- public IReadOnlyList<string> MainMenus { get; } = [nameof(LanguageValueViewModel.MenuFile),nameof(LanguageValueViewModel.MenuDevice),nameof(LanguageValueViewModel.MenuAbout)];
- public ICommand Command => new RelayCommand<MenuItemViewModel?>((p) => MenuClick?.Invoke(this,p));
- public event EventHandler<MenuItemViewModel?> MenuClick;
- private bool isMenuVisible = true;
- public bool IsMenuVisible { get => isMenuVisible; set => SetProperty(ref isMenuVisible, value); }
- public MenuItemViewModel? this[string key]
- {
- get
- {
- MenuItemViewModel? menu = null;
- foreach (var item in Menus)
- {
- menu = GetMenuItem(item, key);
- if(menu!=null)return menu;
- }
- return menu;
- }
- }
- private MenuItemViewModel? GetMenuItem(MenuItemViewModel menuItem,string key)
- {
- if (menuItem == null ) return null;
- if(menuItem.Header == key)return menuItem;
- if( menuItem.Items == null || menuItem.Items.Count == 0)return null;
- foreach (var item in menuItem.Items)
- {
- var tempmenu= GetMenuItem(item, key);
- if(tempmenu!=null)return tempmenu;
- }
- return null;
- }
- public AvaloniaList<MenuItemViewModel> Menus { get; } = new AvaloniaList<MenuItemViewModel>();
- private MenuViewModel()
- {
- Menus.AddRange(MainMenus.Select(x => new MenuItemViewModel()
- {
- Header = x,
- }));
- }
- static MenuViewModel()
- {
- }
- public static MenuViewModel Instance { get; } = new MenuViewModel();
- }
- public sealed class MenuOrderAttribute : Attribute
- {
- public MenuOrderAttribute(int order) => Order = order;
- public int Order { get; }
- }
- }
|