From 094f25289d5bd381997af656d53e50d408a0acf6 Mon Sep 17 00:00:00 2001 From: sukuyedai Date: Sun, 10 Aug 2025 18:53:40 +0800 Subject: [PATCH] 1:Use BreadcrumbConstants.cs 2:Optimize MeasureOverride && ArrangeOverride --- .../Breadcrumb/BreadcrumbStackPanel.cs | 39 +++---------------- .../Breadcrumb/Themes/BreadcrumbConstants.cs | 3 +- .../Themes/BreadcrumbItemTheme.axaml | 4 -- .../Breadcrumb/Themes/BreadcrumbTheme.axaml | 12 +----- 4 files changed, 9 insertions(+), 49 deletions(-) diff --git a/src/AtomUI.Controls/Breadcrumb/BreadcrumbStackPanel.cs b/src/AtomUI.Controls/Breadcrumb/BreadcrumbStackPanel.cs index 3f382a4c0..d02148596 100644 --- a/src/AtomUI.Controls/Breadcrumb/BreadcrumbStackPanel.cs +++ b/src/AtomUI.Controls/Breadcrumb/BreadcrumbStackPanel.cs @@ -7,30 +7,15 @@ internal class BreadcrumbStackPanel : Panel { protected override Size MeasureOverride(Size availableSize) { - return MeasureOverrideNoExpanding(availableSize); - } - - private Size MeasureOverrideNoExpanding(Size availableSize) - { - var layoutSlotSize = availableSize; - layoutSlotSize = layoutSlotSize.WithWidth(double.PositiveInfinity); - var hasVisibleChild = false; - var targetWidth = 0d; - var targetHeight = 0d; + var targetHeight = 0d; + var targetWidth = 0d; foreach (var child in Children) { if (child is BreadcrumbItem box) { - var isVisible = box.IsVisible; - if (isVisible && !hasVisibleChild) - { - hasVisibleChild = true; - } - - box.Measure(layoutSlotSize); - var childDesiredSize = box.DesiredSize; - targetWidth += childDesiredSize.Width; - targetHeight = Math.Max(targetHeight, childDesiredSize.Height); + box.Measure(availableSize); + targetWidth += box.DesiredSize.Width; + targetHeight = Math.Max(targetHeight, box.DesiredSize.Height); } } @@ -38,12 +23,6 @@ internal class BreadcrumbStackPanel : Panel } protected override Size ArrangeOverride(Size finalSize) - { - ArrangeOverrideNoExpanding(finalSize); - return finalSize; - } - - private Size ArrangeOverrideNoExpanding(Size finalSize) { var previousChildSize = 0.0; var offsetX = 0d; @@ -52,19 +31,11 @@ internal class BreadcrumbStackPanel : Panel { if (child is BreadcrumbItem box) { - if (!box.IsVisible) - { - continue; - } - previousChildSize = box.DesiredSize.Width; - box.Arrange(new Rect(new Point(offsetX, offsetY), box.DesiredSize)); offsetX += previousChildSize; } } - return finalSize; } - } \ No newline at end of file diff --git a/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbConstants.cs b/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbConstants.cs index 25457c726..2136520e2 100644 --- a/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbConstants.cs +++ b/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbConstants.cs @@ -2,5 +2,6 @@ internal static class BreadcrumbConstants { - public const string TextPresenterPart = "RootLayout"; + public const string FramePart = "PART_Frame"; + public const string TextPresenterPart = "PART_ItemsPresenter"; } \ No newline at end of file diff --git a/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbItemTheme.axaml b/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbItemTheme.axaml index bf0ddf7c0..3dcacb02c 100644 --- a/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbItemTheme.axaml +++ b/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbItemTheme.axaml @@ -4,10 +4,6 @@ xmlns:atom="https://atomui.net"> - diff --git a/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbTheme.axaml b/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbTheme.axaml index f0345a99c..23562bbb9 100644 --- a/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbTheme.axaml +++ b/src/AtomUI.Controls/Breadcrumb/Themes/BreadcrumbTheme.axaml @@ -3,28 +3,20 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:atom="https://atomui.net"> - - - - +