wip.
This commit is contained in:
@@ -11,10 +11,10 @@
|
|||||||
x:CompileBindings="True"
|
x:CompileBindings="True"
|
||||||
x:DataType="vm:NavMenuDemoViewModel"
|
x:DataType="vm:NavMenuDemoViewModel"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
<ScrollViewer>
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock Text="{ReflectionBinding #menu2.SelectedItem.Header}"></TextBlock>
|
<TextBlock Text="{ReflectionBinding #menu2.SelectedItem.Header}"></TextBlock>
|
||||||
<u:NavMenu Name="menu2">
|
<u:NavMenu Name="menu2">
|
||||||
|
|
||||||
<u:NavMenuItem Header="Menu 1">
|
<u:NavMenuItem Header="Menu 1">
|
||||||
<u:NavMenuItem.Icon>
|
<u:NavMenuItem.Icon>
|
||||||
<Rectangle
|
<Rectangle
|
||||||
@@ -48,9 +48,9 @@
|
|||||||
<u:NavMenu
|
<u:NavMenu
|
||||||
Name="menu"
|
Name="menu"
|
||||||
ItemsSource="{Binding MenuItems}"
|
ItemsSource="{Binding MenuItems}"
|
||||||
HeaderBinding="{Binding Header}"
|
HeaderBinding="{Binding}"
|
||||||
SubMenuBinding="{Binding Children}"
|
SubMenuBinding="{Binding Children}"
|
||||||
IconBinding="{Binding Header}"/>
|
IconBinding="{Binding Header}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
</ScrollViewer>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -13,7 +13,12 @@ public class NavMenuDemoViewModel: ObservableObject
|
|||||||
{
|
{
|
||||||
new MenuItem { Header = "Introduction" , Children =
|
new MenuItem { Header = "Introduction" , Children =
|
||||||
{
|
{
|
||||||
new MenuItem() { Header = "Getting Started" },
|
new MenuItem() { Header = "Getting Started", Children =
|
||||||
|
{
|
||||||
|
new MenuItem() { Header = "Code of Conduct" },
|
||||||
|
new MenuItem() { Header = "How to Contribute" },
|
||||||
|
new MenuItem() { Header = "Development Workflow" },
|
||||||
|
}},
|
||||||
new MenuItem() { Header = "Design Principles" },
|
new MenuItem() { Header = "Design Principles" },
|
||||||
new MenuItem() { Header = "Contributing", Children =
|
new MenuItem() { Header = "Contributing", Children =
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,9 @@
|
|||||||
<Setter Property="Grid.IsSharedSizeScope" Value="True" />
|
<Setter Property="Grid.IsSharedSizeScope" Value="True" />
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<ControlTemplate TargetType="u:NavMenu">
|
<ControlTemplate TargetType="u:NavMenu">
|
||||||
|
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
|
||||||
<ItemsPresenter ItemsPanel="{TemplateBinding ItemsPanel}" />
|
<ItemsPresenter ItemsPanel="{TemplateBinding ItemsPanel}" />
|
||||||
|
</ScrollViewer>
|
||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
</Setter>
|
</Setter>
|
||||||
</ControlTheme>
|
</ControlTheme>
|
||||||
@@ -15,19 +17,22 @@
|
|||||||
<ControlTheme x:Key="{x:Type u:NavMenuItem}" TargetType="u:NavMenuItem">
|
<ControlTheme x:Key="{x:Type u:NavMenuItem}" TargetType="u:NavMenuItem">
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<ControlTemplate TargetType="u:NavMenuItem">
|
<ControlTemplate TargetType="u:NavMenuItem">
|
||||||
<Grid RowDefinitions="Auto, *">
|
<Grid RowDefinitions="Auto, *" Background="{TemplateBinding Background}">
|
||||||
<Grid Grid.Row="0">
|
<Grid Grid.Row="0">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" SharedSizeGroup="Icon" />
|
<ColumnDefinition Width="Auto" SharedSizeGroup="Icon" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" SharedSizeGroup="Header" />
|
||||||
|
<ColumnDefinition Width="Auto" SharedSizeGroup="Expander" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<ContentPresenter
|
<ContentPresenter
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Background="Aqua"
|
Padding="8"
|
||||||
|
Background="Transparent"
|
||||||
Content="{TemplateBinding Icon}" />
|
Content="{TemplateBinding Icon}" />
|
||||||
<ContentPresenter
|
<ContentPresenter
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Background="LightYellow"
|
Padding="0 8"
|
||||||
|
Background="Transparent"
|
||||||
Content="{TemplateBinding Header}" />
|
Content="{TemplateBinding Header}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<ItemsPresenter
|
<ItemsPresenter
|
||||||
@@ -38,5 +43,9 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
</Setter>
|
</Setter>
|
||||||
|
|
||||||
|
<Style Selector="^:selected">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource NavigationMenuItemSelectedBackground}" />
|
||||||
|
</Style>
|
||||||
</ControlTheme>
|
</ControlTheme>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
|
|||||||
@@ -11,6 +11,12 @@ using Avalonia.VisualTree;
|
|||||||
|
|
||||||
namespace Ursa.Controls;
|
namespace Ursa.Controls;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Navigation Menu Item
|
||||||
|
/// <para>Note:</para>
|
||||||
|
/// <para>collapsed: Entire menu is collapsed, only first level icon is displayed. Submenus are in popup. </para>
|
||||||
|
/// <para>closed: When menu is not in collapsed mode, represents whether submenu is hidden. </para>
|
||||||
|
/// </summary>
|
||||||
[PseudoClasses(PC_Highlighted, PC_Collapsed, PC_Closed, PC_FirstLevel, PC_Selector)]
|
[PseudoClasses(PC_Highlighted, PC_Collapsed, PC_Closed, PC_FirstLevel, PC_Selector)]
|
||||||
public class NavMenuItem: HeaderedSelectingItemsControl
|
public class NavMenuItem: HeaderedSelectingItemsControl
|
||||||
{
|
{
|
||||||
@@ -145,7 +151,10 @@ public class NavMenuItem: HeaderedSelectingItemsControl
|
|||||||
protected override void OnPointerPressed(PointerPressedEventArgs e)
|
protected override void OnPointerPressed(PointerPressedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnPointerPressed(e);
|
base.OnPointerPressed(e);
|
||||||
|
if (this.ItemCount == 0)
|
||||||
|
{
|
||||||
SelectItem(this);
|
SelectItem(this);
|
||||||
|
}
|
||||||
Command?.Execute(CommandParameter);
|
Command?.Execute(CommandParameter);
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
}
|
}
|
||||||
@@ -165,6 +174,14 @@ public class NavMenuItem: HeaderedSelectingItemsControl
|
|||||||
if (this.Parent is NavMenuItem menuItem)
|
if (this.Parent is NavMenuItem menuItem)
|
||||||
{
|
{
|
||||||
menuItem.SelectItem(item);
|
menuItem.SelectItem(item);
|
||||||
|
var items = menuItem.LogicalChildren.OfType<NavMenuItem>();
|
||||||
|
foreach (var child in items)
|
||||||
|
{
|
||||||
|
if (child != this)
|
||||||
|
{
|
||||||
|
child.ClearSelection();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (this.Parent is NavMenu menu)
|
else if (this.Parent is NavMenu menu)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user