feat: move to menu.

This commit is contained in:
rabbitism
2023-06-30 20:34:36 +08:00
parent 35582385ef
commit 518a825af3
24 changed files with 308 additions and 173 deletions

View File

@@ -0,0 +1,6 @@
namespace Ursa.Demo.ViewModels;
public class BadgeDemoViewModel: ViewModelBase
{
}

View File

@@ -0,0 +1,6 @@
namespace Ursa.Demo.ViewModels;
public class BannerDemoViewModel: ViewModelBase
{
}

View File

@@ -2,9 +2,9 @@ using System.Collections.ObjectModel;
namespace Ursa.Demo.ViewModels;
public class ButtonGroupViewModel: ViewModelBase
public class ButtonGroupDemoViewModel: ViewModelBase
{
public ObservableCollection<string> Items { get; set; } = new ObservableCollection<string>()
public ObservableCollection<string> Items { get; set; } = new ()
{
"Ding", "Otter", "Husky", "Mr. 17", "Cass"
};

View File

@@ -0,0 +1,6 @@
namespace Ursa.Demo.ViewModels;
public class DividerDemoViewModel: ViewModelBase
{
}

View File

@@ -0,0 +1,6 @@
namespace Ursa.Demo.ViewModels;
public class IPv4BoxDemoViewModel: ViewModelBase
{
}

View File

@@ -0,0 +1,6 @@
namespace Ursa.Demo.ViewModels;
public class LoadingDemoViewModel: ViewModelBase
{
}

View File

@@ -1,6 +1,40 @@
namespace Ursa.Demo.ViewModels;

using CommunityToolkit.Mvvm.Messaging;
namespace Ursa.Demo.ViewModels;
public class MainWindowViewModel : ViewModelBase
{
public string Greeting => "Welcome to Avalonia!";
public MenuViewModel Menus { get; set; } = new MenuViewModel();
private object? _content;
public object? Content
{
get => _content;
set => SetProperty(ref _content, value);
}
public MainWindowViewModel()
{
WeakReferenceMessenger.Default.Register<MainWindowViewModel, string>(this, OnNavigation);
}
private void OnNavigation(MainWindowViewModel vm, string s)
{
Content = s switch
{
MenuKeys.MenuKeyBadge => new BadgeDemoViewModel(),
MenuKeys.MenuKeyBanner => new BannerDemoViewModel(),
MenuKeys.MenuKeyButtonGroup => new ButtonGroupDemoViewModel(),
MenuKeys.MenuKeyDivider => new DividerDemoViewModel(),
MenuKeys.MenuKeyIpBox => new IPv4BoxDemoViewModel(),
MenuKeys.MenuKeyLoading => new LoadingDemoViewModel(),
MenuKeys.MenuKeyNavigation => new NavigationMenuDemoViewModel(),
MenuKeys.MenuKeyPagination => new PaginationDemoViewModel(),
MenuKeys.MenuKeyTagInput => new TagInputDemoViewModel(),
MenuKeys.MenuKeyTimeline => new TimelineDemoViewModel(),
};
}
}

View File

@@ -0,0 +1,29 @@
using System.Collections.ObjectModel;
using System.Windows.Input;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
namespace Ursa.Demo.ViewModels;
public class MenuItemViewModel: ViewModelBase
{
public string MenuHeader { get; set; }
public string MenuIconName { get; set; }
public string Key { get; set; }
public bool IsSeparator { get; set; }
public ObservableCollection<MenuItemViewModel> Children { get; set; } = new();
public ICommand ActivateCommand { get; set; }
public MenuItemViewModel()
{
ActivateCommand = new RelayCommand(OnActivate);
}
private void OnActivate()
{
if (IsSeparator) return;
WeakReferenceMessenger.Default.Send<string>(Key);
}
}

View File

@@ -0,0 +1,26 @@
using System.Collections.ObjectModel;
namespace Ursa.Demo.ViewModels;
public class MenuViewModel: ViewModelBase
{
public ObservableCollection<MenuItemViewModel> MenuItems { get; set; }
public MenuViewModel()
{
MenuItems = new ObservableCollection<MenuItemViewModel>()
{
new() { MenuHeader = "Controls", IsSeparator = true },
new() { MenuHeader = "Badge", Key = MenuKeys.MenuKeyBadge },
new() { MenuHeader = "Banner", Key = MenuKeys.MenuKeyBanner },
new() { MenuHeader = "ButtonGroup", Key = MenuKeys.MenuKeyButtonGroup },
new() { MenuHeader = "Divider", Key = MenuKeys.MenuKeyDivider },
new() { MenuHeader = "IPv4Box", Key = MenuKeys.MenuKeyIpBox },
new() { MenuHeader = "Loading", Key = MenuKeys.MenuKeyLoading },
new() { MenuHeader = "Navigation", Key = MenuKeys.MenuKeyNavigation },
new() { MenuHeader = "Pagination", Key = MenuKeys.MenuKeyPagination },
new() { MenuHeader = "TagInput", Key = MenuKeys.MenuKeyTagInput },
new() { MenuHeader = "Timeline", Key = MenuKeys.MenuKeyTimeline },
};
}
}

View File

@@ -5,18 +5,18 @@ namespace Ursa.Demo.ViewModels;
public class NavigationMenuDemoViewModel: ObservableObject
{
public ObservableCollection<NavigationMenuItemViewModel> MenuItems { get; set; } = new()
public ObservableCollection<MenuItemViewModel> MenuItems { get; set; } = new()
{
new NavigationMenuItemViewModel()
new MenuItemViewModel()
{
MenuHeader = "任务管理",
MenuIconName = "User",
Children = new ObservableCollection<NavigationMenuItemViewModel>()
Children = new ObservableCollection<MenuItemViewModel>()
{
new (){
MenuHeader = "公告管理" ,
MenuIconName = "Star",
Children = new ObservableCollection<NavigationMenuItemViewModel>()
Children = new ObservableCollection<MenuItemViewModel>()
{
new () {MenuHeader = "公告设置"},
new () {MenuHeader = "公告处理"}
@@ -24,16 +24,16 @@ public class NavigationMenuDemoViewModel: ObservableObject
new (){MenuHeader = "任务查询"}
}
},
new NavigationMenuItemViewModel()
new MenuItemViewModel()
{
MenuHeader = "附加功能",
IsSeparator = true,
},
new NavigationMenuItemViewModel()
new MenuItemViewModel()
{
MenuHeader = "任务平台",
MenuIconName = "Gear",
Children = new ObservableCollection<NavigationMenuItemViewModel>()
Children = new ObservableCollection<MenuItemViewModel>()
{
new (){MenuHeader = "任务管理"},
new (){MenuHeader = "用户任务查询"}
@@ -42,11 +42,3 @@ public class NavigationMenuDemoViewModel: ObservableObject
};
}
public class NavigationMenuItemViewModel: ObservableObject
{
public string MenuHeader { get; set; }
public string MenuIconName { get; set; }
public bool IsSeparator { get; set; }
public ObservableCollection<NavigationMenuItemViewModel> Children { get; set; } = new();
}

View File

@@ -5,7 +5,7 @@ using CommunityToolkit.Mvvm.ComponentModel;
namespace Ursa.Demo.ViewModels;
public class PaginationDemoViewModel: ObservableObject
public class PaginationDemoViewModel: ViewModelBase
{
public AvaloniaList<int> PageSizes { get; set; } = new() { 10, 20, 50, 100 };
}

View File

@@ -0,0 +1,6 @@
namespace Ursa.Demo.ViewModels;
public class TagInputDemoViewModel: ViewModelBase
{
}

View File

@@ -4,7 +4,7 @@ using Ursa.Controls;
namespace Ursa.Demo.ViewModels;
public class TimelineDemoViewModel: ObservableObject
public class TimelineDemoViewModel: ViewModelBase
{
public TimelineItemViewModel[] Items { get; } =
{
@@ -46,62 +46,6 @@ public class TimelineDemoViewModel: ObservableObject
Description = "Item 5",
Content = "Content 5"
},
new()
{
Time = DateTime.Now,
TimeFormat = "HH:mm:ss",
Description = "Item 6",
Content = "Content 6"
},
new()
{
Time = DateTime.Now,
TimeFormat = "HH:mm:ss",
Description = "Item 7",
Content = "Content 71231"
},
new()
{
Time = DateTime.Now,
TimeFormat = "HH:mm:ss",
Description = "Item 8",
Content = "Content 8123123"
},
new()
{
Time = DateTime.Now,
TimeFormat = "HH:mm:ss",
Description = "Item 9",
Content = "Content 9123123"
},
new()
{
Time = DateTime.Now,
TimeFormat = "HH:mm:ss",
Description = "Item 10",
Content = "Content 1231231231231231231230"
},
new()
{
Time = DateTime.Now,
TimeFormat = "HH:mm:ss",
Description = "Item 11",
Content = "Content 11231231"
},
new()
{
Time = DateTime.Now,
TimeFormat = "HH:mm:ss",
Description = "Item 12",
Content = "Content 12123123123123"
},
new()
{
Time = DateTime.Now,
TimeFormat = "HH:mm:ss",
Description = "Item 13",
Content = "Last"
}
};
}