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 作为历史根节点
---
HMI.UI/DpUtil/TreeViewHelper.cs | 85 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 85 insertions(+), 0 deletions(-)
diff --git a/HMI.UI/DpUtil/TreeViewHelper.cs b/HMI.UI/DpUtil/TreeViewHelper.cs
new file mode 100644
index 0000000..5346549
--- /dev/null
+++ b/HMI.UI/DpUtil/TreeViewHelper.cs
@@ -0,0 +1,85 @@
+锘縰sing System;
+using System.ComponentModel;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace HMI.UI.DpUtil
+{
+ public class TreeViewHelper
+ {
+ public static bool GetAutoExpand(TreeView treeView)
+ {
+ return (bool)treeView.GetValue(AutoExpandProperty);
+ }
+
+ public static void SetAutoExpand(TreeView treeView, bool value)
+ {
+ treeView.SetValue(AutoExpandProperty, value);
+ }
+
+ public static readonly DependencyProperty AutoExpandProperty =
+ DependencyProperty.RegisterAttached("AutoExpand", typeof(bool), typeof(TreeViewHelper),
+ new PropertyMetadata(false, (d, e) =>
+ {
+ if (!(d is TreeView treeView)) return;
+ if ((bool)e.NewValue)
+ {
+ var dpd = DependencyPropertyDescriptor.FromProperty(ItemsControl.ItemsSourceProperty, typeof(DataGrid));
+ dpd?.AddValueChanged(treeView, TreeView_ItemSourceChanged);
+ }
+ else
+ {
+ var dpd = DependencyPropertyDescriptor.FromProperty(ItemsControl.ItemsSourceProperty, typeof(DataGrid));
+ dpd?.RemoveValueChanged(treeView, TreeView_ItemSourceChanged);
+ }
+ }));
+
+ private static void TreeView_ItemSourceChanged(object sender, EventArgs e)
+ {
+ TreeView tree = sender as TreeView;
+ if (!tree.IsLoaded)
+ {
+ tree.Loaded += Tree_Loaded;
+ }
+ else
+ {
+ ExpandAll(tree);
+ }
+ }
+
+ private static void Tree_Loaded(object sender, RoutedEventArgs e)
+ {
+ TreeView tree = sender as TreeView;
+ ExpandAll(tree);
+ tree.Loaded -= Tree_Loaded;
+ }
+
+ public static void ExpandAll(TreeView treeView)
+ {
+ foreach (var item in treeView.Items)
+ {
+ var temp = treeView.ItemContainerGenerator.ContainerFromItem(item);
+ if (temp is TreeViewItem treeViewItem)
+ {
+ ExpandTreeViewItem(treeViewItem);
+ }
+ }
+ }
+ public static void ExpandTreeViewItem(TreeViewItem item)
+ {
+ item.IsExpanded = true;
+ // 纭繚瀛愰」宸茬粡鐢熸垚
+ item.ApplyTemplate();
+ if (item.Items.Count > 0)
+ {
+ foreach (var subItem in item.Items)
+ {
+ if (item.ItemContainerGenerator.ContainerFromItem(subItem) is TreeViewItem childItem)
+ {
+ ExpandTreeViewItem(childItem);
+ }
+ }
+ }
+ }
+ }
+}
--
Gitblit v1.9.1