diff --git a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml
index ac75e8b..21ef4b6 100644
--- a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml
+++ b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml
@@ -7,9 +7,11 @@
d:DesignHeight="450"
x:Class="Ursa.Demo.Pages.BreadcrumbDemo">
-
+
-
+
+
+
diff --git a/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml b/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml
index 68719e0..952f592 100644
--- a/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml
+++ b/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml
@@ -17,6 +17,7 @@
+
diff --git a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
index 384c364..1c308a2 100644
--- a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
+++ b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
@@ -57,6 +57,15 @@ public class Breadcrumb: ItemsControl
get => GetValue(IconTemplateProperty);
set => SetValue(IconTemplateProperty, value);
}
+
+ public static readonly StyledProperty MaxItemCountProperty = AvaloniaProperty.Register(
+ nameof(MaxItemCount), defaultValue: 4);
+
+ public int MaxItemCount
+ {
+ get => GetValue(MaxItemCountProperty);
+ set => SetValue(MaxItemCountProperty, value);
+ }
static Breadcrumb()
{
@@ -79,20 +88,35 @@ public class Breadcrumb: ItemsControl
if (container is not BreadcrumbItem breadcrumbItem) return;
if (!breadcrumbItem.IsSet(BreadcrumbItem.SeparatorProperty))
{
- SeparatorProperty.Changed.AddClassHandler((o, e) =>
+ if (GetSeparatorInstance(Separator) is { } a)
{
- breadcrumbItem.Separator = e.NewValue.Value switch
- {
- string s => s,
- ITemplate t => t.Build(),
- _ => e.NewValue.Value?.ToString()
- };
+ breadcrumbItem.Separator = a;
+ }
+ SeparatorProperty.Changed.AddClassHandler((_, args) =>
+ {
+ if (GetSeparatorInstance(args.NewValue.Value) is { } b)
+ breadcrumbItem.Separator = b;
});
}
- bool b = breadcrumbItem.IsSet(BreadcrumbItem.IconProperty);
- if(!breadcrumbItem.IsSet(BreadcrumbItem.IconProperty) && IconBinding != null)
+ if (!breadcrumbItem.IsSet(BreadcrumbItem.IconProperty) && IconBinding != null)
{
breadcrumbItem[!BreadcrumbItem.IconProperty] = IconBinding;
}
+ if (!breadcrumbItem.IsSet(BreadcrumbItem.CommandProperty) && CommandBinding != null)
+ {
+ breadcrumbItem[!BreadcrumbItem.CommandProperty] = CommandBinding;
+ }
+ if (!breadcrumbItem.IsSet(BreadcrumbItem.IconTemplateProperty) && IconTemplate != null)
+ {
+ breadcrumbItem.IconTemplate = IconTemplate;
+ }
}
+
+ private static object? GetSeparatorInstance(object? separator) => separator switch
+ {
+ null => null,
+ string s => s,
+ ITemplate t => t.Build(),
+ _ => separator.ToString()
+ };
}
\ No newline at end of file
diff --git a/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs b/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs
index abbaf50..c6c38f9 100644
--- a/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs
+++ b/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs
@@ -9,7 +9,7 @@ public class BreadcrumbItem: ContentControl
{
public static readonly StyledProperty