diff --git a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml
index 0e44740..0df146e 100644
--- a/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml
+++ b/demo/Ursa.Demo/Pages/BreadcrumbDemo.axaml
@@ -23,6 +23,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+ ContentTemplate="{TemplateBinding ContentTemplate}"
+ Foreground="{DynamicResource SemiColorText2}"
+ IsVisible="{TemplateBinding Content,
+ Converter={x:Static ObjectConverters.IsNotNull}}" />
+
-
+
@@ -55,30 +63,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa.Themes.Semi/Styles/Breadcrumb.axaml b/src/Ursa.Themes.Semi/Styles/Breadcrumb.axaml
new file mode 100644
index 0000000..997942a
--- /dev/null
+++ b/src/Ursa.Themes.Semi/Styles/Breadcrumb.axaml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa.Themes.Semi/Styles/_index.axaml b/src/Ursa.Themes.Semi/Styles/_index.axaml
index e3cc666..baa0d9b 100644
--- a/src/Ursa.Themes.Semi/Styles/_index.axaml
+++ b/src/Ursa.Themes.Semi/Styles/_index.axaml
@@ -4,6 +4,7 @@
+
diff --git a/src/Ursa/Controls/BackTop/BackTop.cs b/src/Ursa/Controls/BackTop/BackTop.cs
new file mode 100644
index 0000000..3506807
--- /dev/null
+++ b/src/Ursa/Controls/BackTop/BackTop.cs
@@ -0,0 +1,15 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Controls.Primitives;
+using Avalonia.Media;
+
+namespace Ursa.Controls.BackTop;
+
+public class BackTop: Control
+{
+ public static readonly AttachedProperty AttachProperty =
+ AvaloniaProperty.RegisterAttached("Attach");
+
+ public static void SetAttach(Control obj, bool value) => obj.SetValue(AttachProperty, value);
+ public static bool GetAttach(Control obj) => obj.GetValue(AttachProperty);
+}
\ No newline at end of file
diff --git a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
index 4818d40..b54a5ec 100644
--- a/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
+++ b/src/Ursa/Controls/Breadcrumb/Breadcrumb.cs
@@ -56,6 +56,15 @@ 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 44fad5f..35aa6e1 100644
--- a/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs
+++ b/src/Ursa/Controls/Breadcrumb/BreadcrumbItem.cs
@@ -4,6 +4,7 @@ using Avalonia.Controls;
using Avalonia.Controls.Metadata;
using Avalonia.Controls.Templates;
using Avalonia.Input;
+using Avalonia.LogicalTree;
namespace Ursa.Controls;
@@ -51,6 +52,10 @@ public class BreadcrumbItem: ContentControl
protected override void OnPointerPressed(PointerPressedEventArgs e)
{
base.OnPointerPressed(e);
- Command?.Execute(null);
+ var parent = this.FindLogicalAncestorOfType();
+ if (parent?.IsReadOnly != true)
+ {
+ Command?.Execute(null);
+ }
}
}
\ No newline at end of file