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/Controls/treegrid/Controls/TreeDataGrid.cs | 83 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 83 insertions(+), 0 deletions(-)
diff --git a/HMI.UI/Controls/treegrid/Controls/TreeDataGrid.cs b/HMI.UI/Controls/treegrid/Controls/TreeDataGrid.cs
new file mode 100644
index 0000000..8dc00d4
--- /dev/null
+++ b/HMI.UI/Controls/treegrid/Controls/TreeDataGrid.cs
@@ -0,0 +1,83 @@
+锘縰sing System;
+using System.Collections;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace HMI.UI
+{
+ public class TreeDataGrid : DataGrid
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public event EventHandler<bool> ExpandedChange;
+
+ public virtual void OnExpandedChange(bool expand)
+ {
+ ExpandedChange?.Invoke(this, expand);
+ }
+
+ static TreeDataGrid()
+ {
+ ScrollViewer.HorizontalScrollBarVisibilityProperty
+ .OverrideMetadata(typeof(TreeDataGrid), new FrameworkPropertyMetadata(ScrollBarVisibility.Disabled));
+ ScrollViewer.VerticalScrollBarVisibilityProperty
+ .OverrideMetadata(typeof(TreeDataGrid), new FrameworkPropertyMetadata(ScrollBarVisibility.Disabled));
+ }
+
+ protected override DependencyObject GetContainerForItemOverride()
+ {
+ return new TreeDataGridRow();
+ }
+
+ protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue)
+ {
+ base.OnItemsSourceChanged(oldValue, newValue);
+ }
+ }
+
+ public class TreeDataGridRow : DataGridRow
+ {
+
+ public TreeDataGridRow()
+ {
+ this.DataContextChanged += TreeGridItem_DataContextChanged;
+ }
+
+ private void TreeGridItem_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
+ {
+ if (e.OldValue != null && e.OldValue is TreeItemData oldTreeData)
+ {
+ oldTreeData.IsExpandedChange -= DataIsExpandedChange;
+ oldTreeData.VisibleChange -= DataVisiableChange;
+ }
+ if (DataContext != null && DataContext is TreeItemData treeData)
+ {
+ Visibility = treeData.IsVisible ? Visibility.Visible : Visibility.Collapsed;
+ treeData.IsExpandedChange += DataIsExpandedChange;
+ treeData.VisibleChange += DataVisiableChange;
+ }
+ }
+
+ private void DataIsExpandedChange(object sender, bool IsExpanded)
+ {
+ object parent = ItemsControl.ItemsControlFromItemContainer(this);
+ if (sender is TreeItemData tid)
+ {
+ foreach (var data in tid.Items)
+ {
+ data.IsVisible = IsExpanded;
+ }
+ }
+ }
+
+ private void DataVisiableChange(object sender, bool visiable)
+ {
+ this.Visibility = visiable ? Visibility.Visible : Visibility.Collapsed;
+ //if (parent != null && parent is TreeDataGrid treeDataGrid)
+ //{
+ // treeDataGrid.OnExpandedChange(visiable);
+ //}
+ }
+ }
+}
--
Gitblit v1.9.1