WIP: inherit binding from root.
This commit is contained in:
@@ -1,27 +1,54 @@
|
||||
<UserControl 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"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Ursa.Demo.Pages.NavMenuDemo">
|
||||
<u:NavMenu Name="menu">
|
||||
<u:NavMenuItem Header="Menu 1">
|
||||
<u:NavMenuItem.Icon>
|
||||
<Rectangle Width="10" Height="10" Fill="Red"></Rectangle>
|
||||
</u:NavMenuItem.Icon>
|
||||
</u:NavMenuItem>
|
||||
<u:NavMenuItem Header="Menu 2">
|
||||
<u:NavMenuItem.Icon>
|
||||
<Rectangle Width="20" Height="10" Fill="Red"></Rectangle>
|
||||
</u:NavMenuItem.Icon>
|
||||
</u:NavMenuItem>
|
||||
<u:NavMenuItem Header="Menu 3">
|
||||
<u:NavMenuItem.Icon>
|
||||
<Rectangle Width="30" Height="10" Fill="Red"></Rectangle>
|
||||
</u:NavMenuItem.Icon>
|
||||
</u:NavMenuItem>
|
||||
<u:Divider Content="Divider"></u:Divider>
|
||||
<TextBlock Text="{Binding #menu.SelectedItem}"></TextBlock>
|
||||
</u:NavMenu>
|
||||
<UserControl
|
||||
x:Class="Ursa.Demo.Pages.NavMenuDemo"
|
||||
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="using:Ursa.Demo.ViewModels"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="800"
|
||||
x:CompileBindings="True"
|
||||
x:DataType="vm:NavMenuDemoViewModel"
|
||||
mc:Ignorable="d">
|
||||
<StackPanel>
|
||||
<u:NavMenu>
|
||||
<u:NavMenuItem Header="Menu 1">
|
||||
<u:NavMenuItem.Icon>
|
||||
<Rectangle
|
||||
Width="10"
|
||||
Height="10"
|
||||
Fill="Red" />
|
||||
</u:NavMenuItem.Icon>
|
||||
<u:NavMenuItem Header="Sub Menu 1"></u:NavMenuItem>
|
||||
<u:NavMenuItem Header="Sub Menu 2"></u:NavMenuItem>
|
||||
<u:NavMenuItem Header="Sub Menu 3"></u:NavMenuItem>
|
||||
</u:NavMenuItem>
|
||||
<u:NavMenuItem Header="Menu 2">
|
||||
<u:NavMenuItem.Icon>
|
||||
<Rectangle
|
||||
Width="20"
|
||||
Height="10"
|
||||
Fill="Red" />
|
||||
</u:NavMenuItem.Icon>
|
||||
</u:NavMenuItem>
|
||||
<u:NavMenuItem Header="Menu 3">
|
||||
<u:NavMenuItem.Icon>
|
||||
<Rectangle
|
||||
Width="30"
|
||||
Height="10"
|
||||
Fill="Red" />
|
||||
</u:NavMenuItem.Icon>
|
||||
</u:NavMenuItem>
|
||||
</u:NavMenu>
|
||||
<u:Divider Content="Divider" />
|
||||
<TextBlock Text="{ReflectionBinding #menu.SelectedItem.Header}" />
|
||||
<u:NavMenu
|
||||
Name="menu"
|
||||
ItemsSource="{Binding MenuItems}"
|
||||
HeaderBinding="{Binding Header}"
|
||||
SubMenuBinding="{Binding Children}"
|
||||
IconBinding="{Binding Header}"/>
|
||||
</StackPanel>
|
||||
|
||||
</UserControl>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Ursa.Demo.ViewModels;
|
||||
|
||||
namespace Ursa.Demo.Pages;
|
||||
|
||||
@@ -9,5 +10,6 @@ public partial class NavMenuDemo : UserControl
|
||||
public NavMenuDemo()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = new NavMenuDemoViewModel();
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,49 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using System.Collections.ObjectModel;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Ursa.Demo.ViewModels;
|
||||
|
||||
public class NavMenuDemoViewModel: ObservableObject
|
||||
{
|
||||
|
||||
public ObservableCollection<MenuItem> MenuItems { get; set; } = new ObservableCollection<MenuItem>
|
||||
{
|
||||
new MenuItem { Header = "Introduction" , Children =
|
||||
{
|
||||
new MenuItem() { Header = "Getting Started" },
|
||||
new MenuItem() { Header = "Design Principles" },
|
||||
new MenuItem() { Header = "Contributing" },
|
||||
}},
|
||||
new MenuItem { Header = "Badge" },
|
||||
new MenuItem { Header = "Banner" },
|
||||
new MenuItem { Header = "ButtonGroup" },
|
||||
new MenuItem { Header = "Class Input" },
|
||||
new MenuItem { Header = "Dialog" },
|
||||
new MenuItem { Header = "Divider" },
|
||||
new MenuItem { Header = "Drawer" },
|
||||
new MenuItem { Header = "DualBadge" },
|
||||
new MenuItem { Header = "EnumSelector" },
|
||||
new MenuItem { Header = "ImageViewer" },
|
||||
new MenuItem { Header = "IPv4Box" },
|
||||
new MenuItem { Header = "IconButton" },
|
||||
new MenuItem { Header = "KeyGestureInput" },
|
||||
new MenuItem { Header = "Loading" },
|
||||
new MenuItem { Header = "MessageBox" },
|
||||
new MenuItem { Header = "Navigation" },
|
||||
new MenuItem { Header = "NavMenu" },
|
||||
new MenuItem { Header = "NumericUpDown" },
|
||||
new MenuItem { Header = "Pagination" },
|
||||
new MenuItem { Header = "RangeSlider" },
|
||||
new MenuItem { Header = "SelectionList" },
|
||||
new MenuItem { Header = "TagInput" },
|
||||
new MenuItem { Header = "Timeline" },
|
||||
new MenuItem { Header = "TwoTonePathIcon" },
|
||||
new MenuItem { Header = "ThemeToggler" }
|
||||
};
|
||||
}
|
||||
|
||||
public class MenuItem
|
||||
{
|
||||
public string? Header { get; set; }
|
||||
public string? Icon { get; set; }
|
||||
public ObservableCollection<MenuItem> Children { get; set; } = new ObservableCollection<MenuItem>();
|
||||
}
|
||||
Reference in New Issue
Block a user