feat: wow, first prototype of navigation menu.

This commit is contained in:
rabbitism
2023-06-22 22:00:28 +08:00
parent f4bb4d379e
commit bacf1a6330
9 changed files with 322 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
<UserControl
x:Class="Ursa.Demo.Pages.NavigationMenuDemo"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:u="https://irihi.tech/ursa"
xmlns:vm="clr-namespace:Ursa.Demo.ViewModels"
d:DesignHeight="450"
d:DesignWidth="800"
x:CompileBindings="True"
x:DataType="vm:NavigationMenuDemoViewModel"
mc:Ignorable="d">
<StackPanel>
<u:NavigationMenu Name="menu" ItemsSource="{Binding MenuItems}">
<u:NavigationMenu.ItemTemplate>
<DataTemplate>
<u:NavigationMenuItem Header="{Binding MenuHeader}" ItemsSource="{Binding Children}" />
</DataTemplate>
</u:NavigationMenu.ItemTemplate>
</u:NavigationMenu>
<TreeView ItemsSource="{Binding MenuItems}">
<TreeView.ItemTemplate>
<TreeDataTemplate ItemsSource="{Binding Children}">
<ContentControl Content="{Binding MenuHeader}" />
</TreeDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<TextBlock Text="{ReflectionBinding #menu.SelectedMenuItem.MenuHeader}" />
<u:NavigationMenu>
<u:NavigationMenuItem Header="111" />
<u:NavigationMenuItem Header="222" />
<u:NavigationMenuItem Header="333" />
</u:NavigationMenu>
<u:NavigationMenu ItemsSource="{Binding MenuItems}">
<u:NavigationMenu.ItemTemplate>
<DataTemplate>
<u:NavigationMenuItem Header="{Binding MenuHeader}" />
</DataTemplate>
</u:NavigationMenu.ItemTemplate>
</u:NavigationMenu>
</StackPanel>
</UserControl>

View File

@@ -0,0 +1,15 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Ursa.Demo.ViewModels;
namespace Ursa.Demo.Pages;
public partial class NavigationMenuDemo : UserControl
{
public NavigationMenuDemo()
{
InitializeComponent();
this.DataContext = new NavigationMenuDemoViewModel();
}
}

View File

@@ -0,0 +1,41 @@
using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
namespace Ursa.Demo.ViewModels;
public class NavigationMenuDemoViewModel: ObservableObject
{
public ObservableCollection<NavigationMenuItemViewModel> MenuItems { get; set; } = new()
{
new NavigationMenuItemViewModel()
{
MenuHeader = "1",
Children = new ObservableCollection<NavigationMenuItemViewModel>()
{
new NavigationMenuItemViewModel(){
MenuHeader = "11" ,
Children = new ObservableCollection<NavigationMenuItemViewModel>()
{
new NavigationMenuItemViewModel(){MenuHeader = "111"},
new NavigationMenuItemViewModel(){MenuHeader = "112"}
}},
new NavigationMenuItemViewModel(){MenuHeader = "12"}
}
},
new NavigationMenuItemViewModel()
{
MenuHeader = "2",
Children = new ObservableCollection<NavigationMenuItemViewModel>()
{
new NavigationMenuItemViewModel(){MenuHeader = "21"},
new NavigationMenuItemViewModel(){MenuHeader = "22"}
}
}
};
}
public class NavigationMenuItemViewModel: ObservableObject
{
public string MenuHeader { get; set; }
public ObservableCollection<NavigationMenuItemViewModel> Children { get; set; } = new();
}

View File

@@ -35,6 +35,9 @@
<TabItem Header="IPv4Box">
<pages:IPv4BoxDemo />
</TabItem>
<TabItem Header="Navigation">
<pages:NavigationMenuDemo />
</TabItem>
<TabItem Header="Pagination">
<pages:PaginationDemo />
</TabItem>