From 8ac608505b598a285866e6610bac6771f5a4a264 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Tue, 5 Mar 2024 17:53:16 +0800 Subject: [PATCH] feat: move readonly to item. --- demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml | 8 ++- .../ViewModels/BreadcrumbDemoViewModel.cs | 5 +- .../Controls/Breadcrumb.axaml | 62 ++----------------- src/Ursa/Controls/Breadcrumb/Breadcrumb.cs | 9 --- .../Controls/Breadcrumb/BreadcrumbItem.cs | 12 +++- 5 files changed, 25 insertions(+), 71 deletions(-) diff --git a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml index 0df146e..101542e 100644 --- a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml +++ b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml @@ -19,6 +19,7 @@ + @@ -29,7 +30,7 @@ - + @@ -40,6 +41,11 @@ IconBinding="{Binding Icon}" CommandBinding="{Binding Command}" ItemsSource="{Binding Items1}"> + + + diff --git a/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs index babdf6d..d5dbbee 100644 --- a/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs +++ b/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs @@ -18,15 +18,16 @@ public class BreadcrumbDemoViewModel: ObservableObject new BreadcrumbDemoItem() { Section = "Page 1", Icon = "Page" }, new BreadcrumbDemoItem() { Section = "Page 2", Icon = "Page" }, new BreadcrumbDemoItem() { Section = "Page 3", Icon = "Page" }, - new BreadcrumbDemoItem() { Section = "Page 4", Icon = "Page" }, + new BreadcrumbDemoItem() { Section = "Page 4", Icon = "Page", IsReadOnly = true}, }; } } -public class BreadcrumbDemoItem: ObservableObject +public partial class BreadcrumbDemoItem: ObservableObject { public string Section { get; set; } public string Icon { get; set; } + [ObservableProperty] private bool _isReadOnly; public ICommand Command { get; set; } diff --git a/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml b/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml index 03b74a1..a14d0e2 100644 --- a/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml +++ b/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml @@ -19,13 +19,9 @@ - - @@ -61,6 +57,9 @@ + - @@ -81,7 +80,7 @@ - @@ -90,55 +89,4 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs index b54a5ec..4818d40 100644 --- a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs +++ b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs @@ -56,15 +56,6 @@ public class Breadcrumb: ItemsControl get => GetValue(IconTemplateProperty); set => SetValue(IconTemplateProperty, value); } - - public static readonly StyledProperty IsReadOnlyProperty = AvaloniaProperty.Register( - nameof(IsReadOnly)); - - public bool IsReadOnly - { - get => GetValue(IsReadOnlyProperty); - set => SetValue(IsReadOnlyProperty, value); - } static Breadcrumb() { diff --git a/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs b/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs index 35aa6e1..64aaf9f 100644 --- a/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs +++ b/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs @@ -49,11 +49,19 @@ public class BreadcrumbItem: ContentControl set => SetValue(IconTemplateProperty, value); } + public static readonly StyledProperty IsReadOnlyProperty = AvaloniaProperty.Register( + nameof(IsReadOnly)); + + public bool IsReadOnly + { + get => GetValue(IsReadOnlyProperty); + set => SetValue(IsReadOnlyProperty, value); + } + protected override void OnPointerPressed(PointerPressedEventArgs e) { base.OnPointerPressed(e); - var parent = this.FindLogicalAncestorOfType(); - if (parent?.IsReadOnly != true) + if (!IsReadOnly) { Command?.Execute(null); }