123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- 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 ShakerApp.ViewModels
- {
- [AttributeUsage(AttributeTargets.Method)]
- public sealed class MenuClickAttribute:Attribute
- {
- public MenuClickAttribute(string key = "") { Key = key; }
- public string Key { get; } = string.Empty;
- }
- internal class MenuViewModel:ViewModelBase
- {
- public ICommand Command => new RelayCommand<MenuItemViewModel?>((p) => MenuClick?.Invoke(p));
- [AllowNull]
- public Action<MenuItemViewModel?> MenuClick { get; set; }
- 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.Add(GetFileMenu());
- Menus.Add(GetDeviceMenu());
- Menus.Add(GetTestMenu());
- }
- private MenuItemViewModel GetFileMenu()
- {
- return new MenuItemViewModel(new MenuItemViewModel()
- {
- Header = "MenuSaveConfig",
- IconKey = "SaveGeometry",
- IconVisibile = true,
- IsEnabled = true,
- IsSeparator = false,
- IsVisible = true,
- },
- new MenuItemViewModel()
- {
- Header = "MenuLoadConfig",
- IconKey = "OpenGeometry",
- IconVisibile = true,
- IsEnabled = true,
- IsSeparator = false,
- IsVisible = true,
- },
- new MenuItemViewModel()
- {
- IsSeparator = true,
- },
- new MenuItemViewModel()
- {
- Header = "MenuExit",
- IconKey = "ExitGeometry",
- IconVisibile = true,
- IsEnabled = true,
- IsSeparator = false,
- IsVisible = true,
- })
- {
- Header = "MenuFile",
- };
- }
- private MenuItemViewModel GetDeviceMenu()
- {
- return new MenuItemViewModel(new MenuItemViewModel()
- {
- Header = "MenuManger",
- IsEnabled= true,
- IsVisible= true,
- },new MenuItemViewModel()
- {
- Header = "MenuConnect",
- IsEnabled= true,
- IsVisible = false,
- },new MenuItemViewModel()
- {
- Header= "MenuDisConnect",
- IsEnabled = false,
- },new MenuItemViewModel()
- {
- Header = "MenuDeviceConfig",
- IsEnabled = false,
- },new MenuItemViewModel()
- {
- IsSeparator= true,
- },new MenuItemViewModel()
- {
- Header = "MenuShakerControl",
- IsEnabled = false,
- },new MenuItemViewModel()
- {
- IsSeparator = true,
- },new MenuItemViewModel()
- {
- Header = "MenuOilSourceControl",
- IsEnabled =false,
- },new MenuItemViewModel()
- {
- Header= "CanDebug",
- IsSeparator =true,
- IsVisible = true,
- },new MenuItemViewModel()
- {
- Header= "MenuDebug",
- IsEnabled = false,
- })
- {
- Header = "MenuDevice",
- };
- }
- private MenuItemViewModel GetTestMenu()
- {
- return new MenuItemViewModel(new MenuItemViewModel())
- {
- Header = "MenuTest",
- IsEnabled = false,
- };
- }
- static MenuViewModel()
- {
- }
- public static MenuViewModel Instance { get; } = new MenuViewModel();
- }
- }
|