From 4c3eb7f334abb8129b57e86f2935d75d0b3070b4 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 03 三月 2025 18:55:31 +0800
Subject: [PATCH] 完善UI;新增TestResult;

---
 HMI.DataViewer/DataViewer.xaml.cs |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 53 insertions(+), 6 deletions(-)

diff --git a/HMI.DataViewer/DataViewer.xaml.cs b/HMI.DataViewer/DataViewer.xaml.cs
index 0b7ca90..6c3ac20 100644
--- a/HMI.DataViewer/DataViewer.xaml.cs
+++ b/HMI.DataViewer/DataViewer.xaml.cs
@@ -2,6 +2,7 @@
 using HMI.Core.Util;
 using HMI.DataViewer.Entity;
 using HMI.UI.Util;
+using Panuon.WPF.UI;
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -10,7 +11,9 @@
 using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
 using System.Windows.Data;
+using System.Windows.Media;
 
 namespace HMI.DataViewer
 {
@@ -97,7 +100,7 @@
             }
 
             DataBase_Setting setting = Map[program];
-            
+
 
             string fields = string.Join(",", Datas?.Select(d => $"[{d.Key}]").ToList());
 
@@ -116,7 +119,7 @@
                 conditon += $" AND {timeCol} < '{endTimeInput.Text}'";
             }
             conditon = string.IsNullOrEmpty(conditon) ? string.Empty : $" WHERE {conditon}";
-            
+
             SqliteHelper helper = null;
             string sql = string.Empty;
             try
@@ -124,14 +127,13 @@
                 helper = new SqliteHelper(setting.DBFilePath);
                 sql = $"SELECT {fields} FROM {setting.TableName} {conditon}";
                 DataTable dt = helper.GetDataTable(sql);
-
+                HMI.UI.DpUtil.DataGridHelper.SetSelectedColumn(dataTable, null);
                 dataTable.ItemsSource = dt.DefaultView;
             }
             catch (Exception ex)
             {
                 log.Error($"Select Data Failed. SQL: {sql}", ex);
                 ToastHelper.Error(Window.GetWindow(this), $"鏌ヨ澶辫触锛亄ex.Message}");
-
             }
             finally
             {
@@ -191,6 +193,7 @@
                 setting?.Condition?.Select(d => new QueryData { Key = d.Key, Name = d.Desc, Condition = "=" }).ToList());
 
             var temp = dataTable.Columns[0];
+            HMI.UI.DpUtil.DataGridHelper.SetSelectedColumn(dataTable, null);
             dataTable.Columns.Clear();
             dataTable.Columns.Add(temp);
             foreach (var data in Datas)
@@ -204,11 +207,55 @@
             DataGridTextColumn textColumn = new DataGridTextColumn
             {
                 Header = header,
-                Binding = new Binding(bindingPath)
-                ,
+                Binding = new Binding(bindingPath),
                 Width = new DataGridLength(1, DataGridLengthUnitType.Star)
             };
             dataTable.Columns.Add(textColumn);
         }
+
+        private void dataTable_PreviewMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
+        {
+            // 鑾峰彇鐐瑰嚮鐨勫厓绱�
+            DependencyObject dep = (DependencyObject)e.OriginalSource;
+
+            // 閬嶅巻鎵惧埌 DataGridColumnHeader
+            while (dep != null && !(dep is DataGridColumnHeader) && !(dep is DataGridRow))
+            {
+                dep = VisualTreeHelper.GetParent(dep);
+            }
+            HMI.UI.DpUtil.DataGridHelper.SetSelectedColumn(dataTable, null);
+
+            if (dep is DataGridColumnHeader columnHeader)
+            {
+                // 鑾峰彇鍒楃储寮�
+                int columnIndex = columnHeader.Column.DisplayIndex;
+
+                // 娓呴櫎宸叉湁閫夋嫨
+                dataTable.SelectedCells.Clear();
+
+                // 閬嶅巻鎵�鏈夎锛岄�変腑璇ュ垪鐨勬墍鏈夊崟鍏冩牸
+                foreach (var item in dataTable.Items)
+                {
+                    DataGridCellInfo cellInfo = new DataGridCellInfo(item, columnHeader.Column);
+                    dataTable.SelectedCells.Add(cellInfo);
+                }
+                HMI.UI.DpUtil.DataGridHelper.SetSelectedColumn(dataTable, columnHeader.Column);
+
+                e.Handled = true; // 闃叉榛樿琛屼负
+            }
+            else if (dep is DataGridRow row)
+            {
+                // 娓呴櫎宸叉湁閫夋嫨
+                dataTable.SelectedCells.Clear();
+                dataTable.SelectedItem = row.Item;
+                e.Handled = true;
+            }
+        }
+
+        private void MenuItem_Click(object sender, RoutedEventArgs e)
+        {
+            DataGridColumn column = HMI.UI.DpUtil.DataGridHelper.GetSelectedColumn(dataTable);
+
+        }
     }
 }

--
Gitblit v1.9.1