diff --git a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml index 21ef4b6..9ceef32 100644 --- a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml +++ b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml @@ -1,17 +1,37 @@ - + + + + - - - - - + + + + + + + + + + + + + diff --git a/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs index 92f716a..591b585 100644 --- a/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs +++ b/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs @@ -1,8 +1,26 @@ +using System.Collections.ObjectModel; using CommunityToolkit.Mvvm.ComponentModel; namespace Ursa.Demo.ViewModels; public class BreadcrumbDemoViewModel: ObservableObject { - + public ObservableCollection Items1 { get; set; } + + public BreadcrumbDemoViewModel() + { + Items1 = new ObservableCollection() + { + new BreadcrumbDemoItem() { Section = "Home", Icon = "Home" }, + new BreadcrumbDemoItem() { Section = "Page 1", Icon = "Page" }, + new BreadcrumbDemoItem() { Section = "Page 2", Icon = "Page" }, + new BreadcrumbDemoItem() { Section = "Page 3", Icon = "Page" }, + }; + } +} + +public class BreadcrumbDemoItem: ObservableObject +{ + public string Section { get; set; } + public string Icon { get; set; } } \ No newline at end of file diff --git a/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml b/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml index 952f592..30750b8 100644 --- a/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml +++ b/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml @@ -1,8 +1,18 @@ - + + + + + + + + + + + @@ -15,8 +25,8 @@ - - + + diff --git a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs index 1c308a2..252ebca 100644 --- a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs +++ b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs @@ -4,7 +4,6 @@ using Avalonia.Controls.Templates; using Avalonia.Data; using Avalonia.Layout; using Avalonia.Metadata; -using Irihi.Avalonia.Shared.Helpers; namespace Ursa.Controls; @@ -84,7 +83,8 @@ public class Breadcrumb: ItemsControl protected override void PrepareContainerForItemOverride(Control container, object? item, int index) { - base.PrepareContainerForItemOverride(container, item, index); + // base.PrepareContainerForItemOverride(container, item, index); + if (container == item) return; if (container is not BreadcrumbItem breadcrumbItem) return; if (!breadcrumbItem.IsSet(BreadcrumbItem.SeparatorProperty)) { @@ -98,6 +98,14 @@ public class Breadcrumb: ItemsControl breadcrumbItem.Separator = b; }); } + if(!breadcrumbItem.IsSet(ContentControl.ContentProperty)) + { + breadcrumbItem.SetCurrentValue(ContentControl.ContentProperty, item); + if (DisplayMemberBinding is not null) + { + breadcrumbItem[!ContentControl.ContentProperty] = DisplayMemberBinding; + } + } if (!breadcrumbItem.IsSet(BreadcrumbItem.IconProperty) && IconBinding != null) { breadcrumbItem[!BreadcrumbItem.IconProperty] = IconBinding;