From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 Plugin.TestResult/Util/DpUtil.cs |  221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 221 insertions(+), 0 deletions(-)

diff --git a/Plugin.TestResult/Util/DpUtil.cs b/Plugin.TestResult/Util/DpUtil.cs
new file mode 100644
index 0000000..e164f1f
--- /dev/null
+++ b/Plugin.TestResult/Util/DpUtil.cs
@@ -0,0 +1,221 @@
+锘縰sing System.Collections.Generic;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Media;
+
+namespace Plugin.TestResult_WPF
+{
+    public class GridProperties
+    {
+        public static bool GetShowBorder(DependencyObject obj)
+        {
+            return (bool)obj.GetValue(ShowBorderProperty);
+        }
+        public static void SetShowBorder(DependencyObject obj, bool value)
+        {
+            obj.SetValue(ShowBorderProperty, value);
+        }
+        public static readonly DependencyProperty ShowBorderProperty =
+            DependencyProperty.RegisterAttached("ShowBorder", typeof(bool), typeof(Grid), new PropertyMetadata(false, OnShowBorderChanged));
+
+        public static int GetBorderSpace(DependencyObject obj)
+        {
+            return (int)obj.GetValue(BorderSpaceProperty);
+        }
+        public static void SetBorderSpace(DependencyObject obj, int value)
+        {
+            obj.SetValue(BorderSpaceProperty, value);
+        }
+        public static readonly DependencyProperty BorderSpaceProperty =
+            DependencyProperty.RegisterAttached("BorderSpace", typeof(int), typeof(Grid), new PropertyMetadata(0, OnShowBorderChanged));
+
+
+
+        private static void OnShowBorderChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        {
+            if (d is Grid grid)
+            {
+                if (e.Property == ShowBorderProperty)
+                {
+                    grid.Loaded += GridInnerBorderLoaded;
+                    return;
+                }
+                else if (e.Property == BorderSpaceProperty)
+                {
+                    grid.Loaded += GridSpaceOnLoaded;
+                    return;
+                }
+            }
+            else if (d is UniformGrid uniformGrid)
+            {
+                uniformGrid.Loaded += UniformGridOnLoad;
+                return;
+            }
+        }
+
+        private static void GridInnerBorderLoaded(object sender, RoutedEventArgs e)
+        {
+            if (!(sender is Grid grid)) return;
+            var rowCount = grid.RowDefinitions.Count;
+            var columnCount = grid.ColumnDefinitions.Count;
+            int totalCount = rowCount * columnCount;
+
+            int width = 1;
+
+            string baseData = "None";
+            HashSet<string> data = new HashSet<string>(baseData.Split(','));
+            bool ignoreTop = data.Contains("All") || data.Contains("Top"),
+                ignoreBottom = data.Contains("All") || data.Contains("Bottom"),
+                ignoreLeft = data.Contains("All") || data.Contains("Left"),
+                ignoreRight = data.Contains("All") || data.Contains("Right");
+
+            foreach (var child in grid.Children)
+            {
+                int row = Grid.GetRow((UIElement)child);
+                int col = Grid.GetColumn((UIElement)child);
+
+                var bt = new Thickness(col == 0 ? (ignoreLeft ? 0 : width) : 0,
+                    row == 0 ? (ignoreTop ? 0 : width) : 0,
+                    (col == columnCount - 1 && ignoreRight) ? 0 : width,
+                    width);
+
+                if (child is UserControl control)
+                {
+                    control.BorderBrush = Brushes.Black;
+                    control.BorderThickness = bt;
+                }
+
+                if (child is Label label)
+                {
+                    label.BorderBrush = Brushes.Black;
+                    label.BorderThickness = bt;
+                }
+
+                if (child is TextBox box)
+                {
+                    box.BorderBrush = Brushes.Black;
+                    box.BorderThickness = bt;
+                }
+            }
+
+            /// 寮冪敤
+            //for (int i = 0; i < totalCount; i++)
+            //{
+            //    int row = i / columnCount;
+            //    int col = i % columnCount;
+
+            //    if (i > grid.Children.Count - 1) {
+            //        continue;
+            //    }
+            //    var cell = grid.Children[i];
+            //    var bt = new Thickness(col == 0 ? (ignoreLeft ? 0 : width) : 0,
+            //        row == 0 ? (ignoreTop ? 0 : width) : 0,
+            //        (col == columnCount - 1 && ignoreRight) ? 0 : width,
+            //        width);
+
+            //    if (cell is UserControl child)
+            //    {
+            //        child.BorderBrush = Brushes.Black;
+            //        child.BorderThickness = bt;
+            //    }
+
+            //    if (cell is Label label)
+            //    {
+            //        label.BorderBrush = Brushes.Black;
+            //        label.BorderThickness = bt;
+            //    }
+
+            //    if (cell is TextBox box)
+            //    {
+            //        box.BorderBrush = Brushes.Black;
+            //        box.BorderThickness = bt;
+            //    }
+            //}
+            grid.Loaded -= GridInnerBorderLoaded;
+        }
+
+        private static void GridSpaceOnLoaded(object sender, RoutedEventArgs e)
+        {
+            if (!(sender is Grid grid)) return;
+            int space = GetBorderSpace(grid);
+            if (space <= 0)
+            {
+                return;
+            }
+
+            var rowCount = grid.RowDefinitions.Count;
+            var columnCount = grid.ColumnDefinitions.Count;
+            int totalCount = rowCount * columnCount;
+
+            for (int i = 0; i < totalCount; i++)
+            {
+                int row = i / columnCount;
+                int col = i % columnCount;
+
+                if (i > grid.Children.Count - 1)
+                {
+                    continue;
+                }
+                var cell = grid.Children[i];
+
+                var bt = new Thickness(col == 0 ? space : 0, row == 0 ? space : 0, space, space);
+
+                if (cell is UserControl child)
+                {
+                    child.Margin = bt;
+                }
+            }
+            grid.Loaded -= GridSpaceOnLoaded;
+        }
+
+        private static void UniformGridOnLoad(object sender, RoutedEventArgs e)
+        {
+            if (!(sender is UniformGrid grid)) return;
+            //var rowCount = grid.Rows;
+            int columnCount = grid.Columns;
+            int totalCount = grid.Children.Count;
+            int rowCount = totalCount / columnCount;
+            int width = 1;
+
+            for (int i = 0; i < grid.Children.Count; i++)
+            {
+                int row = i / columnCount;
+                int col = i % columnCount;
+                var child = grid.Children[i];
+
+                string baseData = "None";
+                HashSet<string> data = new HashSet<string>(baseData.Split(','));
+                bool ignoreTop = data.Contains("All") || data.Contains("Top"),
+                    ignoreBottom = data.Contains("All") || data.Contains("Bottom"),
+                    ignoreLeft = data.Contains("All") || data.Contains("Left"),
+                    ignoreRight = data.Contains("All") || data.Contains("Right");
+
+                var bt = new Thickness(col == 0 ? (ignoreLeft ? 0 : width) : 0,
+                    row == 0 ? (ignoreTop ? 0 : width) : 0,
+                    (col == columnCount - 1 && ignoreRight) ? 0 : width,
+                    (row == rowCount && ignoreBottom) ? 0 : width);
+
+                if (child is UserControl control)
+                {
+                    control.BorderBrush = Brushes.Black;
+                    control.BorderThickness = bt;
+                }
+
+                if (child is Label label)
+                {
+                    label.BorderBrush = Brushes.Black;
+                    label.BorderThickness = bt;
+                }
+
+                if (child is TextBox box)
+                {
+                    box.BorderBrush = Brushes.Black;
+                    box.BorderThickness = bt;
+                }
+            }
+            grid.Loaded -= UniformGridOnLoad;
+        }
+    }
+
+}

--
Gitblit v1.9.1