diff --git a/demo/Ursa.Demo/Models/MenuKeys.cs b/demo/Ursa.Demo/Models/MenuKeys.cs
index 085be94..b7b1a76 100644
--- a/demo/Ursa.Demo/Models/MenuKeys.cs
+++ b/demo/Ursa.Demo/Models/MenuKeys.cs
@@ -6,6 +6,7 @@ public static class MenuKeys
public const string MenuKeyBadge = "Badge";
public const string MenuKeyBanner = "Banner";
public const string MenuKeyButtonGroup = "ButtonGroup";
+ public const string MenuKeyBreadcrumb = "Breadcrumb";
public const string MenuKeyClassInput = "Class Input";
public const string MenuKeyDialog = "Dialog";
public const string MenuKeyDivider = "Divider";
diff --git a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml
new file mode 100644
index 0000000..ac75e8b
--- /dev/null
+++ b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml.cs b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml.cs
new file mode 100644
index 0000000..c119fc7
--- /dev/null
+++ b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml.cs
@@ -0,0 +1,13 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace Ursa.Demo.Pages;
+
+public partial class BreadcrumbDemo : UserControl
+{
+ public BreadcrumbDemo()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs
new file mode 100644
index 0000000..92f716a
--- /dev/null
+++ b/demo/Ursa.Demo/ViewModels/BreadcrumbDemoViewModel.cs
@@ -0,0 +1,8 @@
+using CommunityToolkit.Mvvm.ComponentModel;
+
+namespace Ursa.Demo.ViewModels;
+
+public class BreadcrumbDemoViewModel: ObservableObject
+{
+
+}
\ No newline at end of file
diff --git a/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs b/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
index 8cc13e6..d987128 100644
--- a/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
@@ -28,6 +28,7 @@ public class MainViewViewModel : ViewModelBase
MenuKeys.MenuKeyBadge => new BadgeDemoViewModel(),
MenuKeys.MenuKeyBanner => new BannerDemoViewModel(),
MenuKeys.MenuKeyButtonGroup => new ButtonGroupDemoViewModel(),
+ MenuKeys.MenuKeyBreadcrumb => new BreadcrumbDemoViewModel(),
MenuKeys.MenuKeyClassInput => new ClassInputDemoViewModel(),
MenuKeys.MenuKeyDialog => new DialogDemoViewModel(),
MenuKeys.MenuKeyDivider => new DividerDemoViewModel(),
diff --git a/demo/Ursa.Demo/ViewModels/MenuViewModel.cs b/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
index a25e8d1..a4eaa14 100644
--- a/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
@@ -14,6 +14,7 @@ public class MenuViewModel: ViewModelBase
new() { MenuHeader = "Controls", IsSeparator = true },
new() { MenuHeader = "Badge", Key = MenuKeys.MenuKeyBadge, Status = "Updated"},
new() { MenuHeader = "Banner", Key = MenuKeys.MenuKeyBanner },
+ new() { MenuHeader = "Breadcrumb", Key = MenuKeys.MenuKeyBreadcrumb, Status = "New" },
new() { MenuHeader = "Button Group", Key = MenuKeys.MenuKeyButtonGroup},
new() { MenuHeader = "Class Input", Key = MenuKeys.MenuKeyClassInput, Status = "New" },
new() { MenuHeader = "Dialog", Key = MenuKeys.MenuKeyDialog, Status = "Updated"},
diff --git a/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml b/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml
new file mode 100644
index 0000000..68719e0
--- /dev/null
+++ b/src/Ursa.Themes.Semi/Controls/Breadcrumb.axaml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa.Themes.Semi/Controls/_index.axaml b/src/Ursa.Themes.Semi/Controls/_index.axaml
index 21d3909..6be2414 100644
--- a/src/Ursa.Themes.Semi/Controls/_index.axaml
+++ b/src/Ursa.Themes.Semi/Controls/_index.axaml
@@ -4,6 +4,7 @@
+
diff --git a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
index d2ab31c..384c364 100644
--- a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
+++ b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
@@ -4,6 +4,7 @@ using Avalonia.Controls.Templates;
using Avalonia.Data;
using Avalonia.Layout;
using Avalonia.Metadata;
+using Irihi.Avalonia.Shared.Helpers;
namespace Ursa.Controls;
@@ -47,6 +48,15 @@ public class Breadcrumb: ItemsControl
get => GetValue(SeparatorProperty);
set => SetValue(SeparatorProperty, value);
}
+
+ public static readonly StyledProperty IconTemplateProperty = AvaloniaProperty.Register(
+ nameof(IconTemplate));
+
+ public IDataTemplate? IconTemplate
+ {
+ get => GetValue(IconTemplateProperty);
+ set => SetValue(IconTemplateProperty, value);
+ }
static Breadcrumb()
{
@@ -66,20 +76,23 @@ public class Breadcrumb: ItemsControl
protected override void PrepareContainerForItemOverride(Control container, object? item, int index)
{
base.PrepareContainerForItemOverride(container, item, index);
- if (container is BreadcrumbItem breadcrumbItem)
+ if (container is not BreadcrumbItem breadcrumbItem) return;
+ if (!breadcrumbItem.IsSet(BreadcrumbItem.SeparatorProperty))
{
- if (!breadcrumbItem.IsSet(BreadcrumbItem.SeparatorProperty))
+ SeparatorProperty.Changed.AddClassHandler((o, e) =>
{
- SeparatorProperty.Changed.AddClassHandler((o, e) =>
+ breadcrumbItem.Separator = e.NewValue.Value switch
{
- breadcrumbItem.Separator = e.NewValue.Value switch
- {
- string s => s,
- ITemplate t => t.Build(),
- _ => e.NewValue.Value?.ToString()
- };
- });
- }
+ string s => s,
+ ITemplate t => t.Build(),
+ _ => e.NewValue.Value?.ToString()
+ };
+ });
+ }
+ bool b = breadcrumbItem.IsSet(BreadcrumbItem.IconProperty);
+ if(!breadcrumbItem.IsSet(BreadcrumbItem.IconProperty) && IconBinding != null)
+ {
+ breadcrumbItem[!BreadcrumbItem.IconProperty] = IconBinding;
}
}
}
\ No newline at end of file
diff --git a/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs b/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs
index 1de6be1..abbaf50 100644
--- a/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs
+++ b/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs
@@ -1,6 +1,7 @@
using System.Windows.Input;
using Avalonia;
using Avalonia.Controls;
+using Avalonia.Controls.Templates;
namespace Ursa.Controls;
@@ -34,6 +35,15 @@ public class BreadcrumbItem: ContentControl
set => SetValue(CommandProperty, value);
}
+ public static readonly StyledProperty IconTemplateProperty = AvaloniaProperty.Register(
+ nameof(IconTemplate));
+
+ public IDataTemplate? IconTemplate
+ {
+ get => GetValue(IconTemplateProperty);
+ set => SetValue(IconTemplateProperty, value);
+ }
+
static BreadcrumbItem()
{