feat: wow, first prototype of navigation menu.
This commit is contained in:
47
demo/Ursa.Demo/Pages/NavigationMenuDemo.axaml
Normal file
47
demo/Ursa.Demo/Pages/NavigationMenuDemo.axaml
Normal 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>
|
||||
15
demo/Ursa.Demo/Pages/NavigationMenuDemo.axaml.cs
Normal file
15
demo/Ursa.Demo/Pages/NavigationMenuDemo.axaml.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
41
demo/Ursa.Demo/ViewModels/NavigationMenuDemoViewModel.cs
Normal file
41
demo/Ursa.Demo/ViewModels/NavigationMenuDemoViewModel.cs
Normal 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();
|
||||
}
|
||||
@@ -35,6 +35,9 @@
|
||||
<TabItem Header="IPv4Box">
|
||||
<pages:IPv4BoxDemo />
|
||||
</TabItem>
|
||||
<TabItem Header="Navigation">
|
||||
<pages:NavigationMenuDemo />
|
||||
</TabItem>
|
||||
<TabItem Header="Pagination">
|
||||
<pages:PaginationDemo />
|
||||
</TabItem>
|
||||
|
||||
Reference in New Issue
Block a user