feat: try to use grid as panel.

This commit is contained in:
rabbitism
2024-02-11 23:52:23 +08:00
parent 36bb3b563f
commit 49fdf80b7b
8 changed files with 51 additions and 18 deletions

View File

@@ -19,6 +19,7 @@ public static class MenuKeys
public const string MenuKeyLoading = "Loading";
public const string MenuKeyMessageBox = "MessageBox";
public const string MenuKeyNavigation = "Navigation";
public const string MenuKeyNavMenu = "NavMenu";
public const string MenuKeyNumericUpDown = "NumericUpDown";
public const string MenuKeyPagination = "Pagination";
public const string MenuKeyRangeSlider = "RangeSlider";

View File

@@ -0,0 +1,25 @@
<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>
<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:NavMenu>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace Ursa.Demo.Pages;
public partial class NavMenuDemo : UserControl
{
public NavMenuDemo()
{
InitializeComponent();
}
}

View File

@@ -51,22 +51,5 @@
</u:SelectionList.ItemTemplate>
</u:SelectionList>
<Button Command="{Binding Clear}">Clear</Button>
<u:NavMenu>
<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:NavMenu>
</StackPanel>
</UserControl>

View File

@@ -41,6 +41,7 @@ public class MainViewViewModel : ViewModelBase
MenuKeys.MenuKeyLoading => new LoadingDemoViewModel(),
MenuKeys.MenuKeyMessageBox => new MessageBoxDemoViewModel(),
MenuKeys.MenuKeyNavigation => new NavigationMenuDemoViewModel(),
MenuKeys.MenuKeyNavMenu => new NavMenuDemoViewModel(),
MenuKeys.MenuKeyNumericUpDown => new NumericUpDownDemoViewModel(),
MenuKeys.MenuKeyPagination => new PaginationDemoViewModel(),
MenuKeys.MenuKeyRangeSlider => new RangeSliderDemoViewModel(),

View File

@@ -28,6 +28,7 @@ public class MenuViewModel: ViewModelBase
new() { MenuHeader = "Loading", Key = MenuKeys.MenuKeyLoading },
new() { MenuHeader = "Message Box", Key = MenuKeys.MenuKeyMessageBox, Status = "New" },
new() { MenuHeader = "Navigation", Key = MenuKeys.MenuKeyNavigation, Status = "WIP" },
new() { MenuHeader = "Nav Menu", Key = MenuKeys.MenuKeyNavMenu, Status = "WIP"},
new() { MenuHeader = "NumericUpDown", Key = MenuKeys.MenuKeyNumericUpDown, Status = "New" },
new() { MenuHeader = "Pagination", Key = MenuKeys.MenuKeyPagination },
new() { MenuHeader = "RangeSlider", Key = MenuKeys.MenuKeyRangeSlider, Status = "New"},

View File

@@ -0,0 +1,8 @@
using CommunityToolkit.Mvvm.ComponentModel;
namespace Ursa.Demo.ViewModels;
public class NavMenuDemoViewModel: ObservableObject
{
}

View File

@@ -3,6 +3,7 @@
xmlns:u="https://irihi.tech/ursa">
<!-- Add Resources Here -->
<ControlTheme TargetType="u:NavMenu" x:Key="{x:Type u:NavMenu}">
<Setter Property="Grid.IsSharedSizeScope" Value="True"></Setter>
<Setter Property="Template">
<ControlTemplate TargetType="u:NavMenu">
<ItemsPresenter ItemsPanel="{TemplateBinding ItemsPanel}" Grid.IsSharedSizeScope="True"/>
@@ -20,7 +21,7 @@
<ColumnDefinition Width="Auto" SharedSizeGroup="Icon" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ContentPresenter Content="{TemplateBinding Icon}" />
<ContentPresenter Content="{TemplateBinding Icon}" HorizontalAlignment="Left" />
<ContentPresenter Grid.Column="1" Content="{TemplateBinding Header}" />
</Grid>
</Expander.Header>