From 9211ec11c112e18cd99e77f889a01110a70031ce Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 24 十一月 2025 17:47:15 +0800
Subject: [PATCH] 优化项目结构

---
 HMI.UI/Controls/MultiCombox.xaml.cs |   26 +++++++++++++++++---------
 1 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/HMI.UI/Controls/MultiCombox.xaml.cs b/HMI.UI/Controls/MultiCombox.xaml.cs
index 85f5bcc..e688cd5 100644
--- a/HMI.UI/Controls/MultiCombox.xaml.cs
+++ b/HMI.UI/Controls/MultiCombox.xaml.cs
@@ -1,5 +1,4 @@
 锘縰sing System;
-using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Globalization;
@@ -53,6 +52,11 @@
 
         private void MultiComboBoxItem_PreviewMouseUp(object sender, MouseButtonEventArgs e)
         {
+            if (e.OriginalSource is CheckBox)
+            {
+                // 浠嶤heckBox鐐瑰嚮浼犺繃鏉ョ殑浜嬩欢瑕佹媺鍥炵劍鐐癸紝涓嶇劧浼氬崱鍦≒opup灞傚綋鍓嶇殑Item涓�
+                this.Focus();
+            }
             if (DataContext is MultiComboBoxData data)
             {
                 data.IsChecked = !data.IsChecked;
@@ -64,17 +68,17 @@
         {
             if (e.OldValue != null && e.OldValue is MultiComboBoxData oldData)
             {
-                oldData.IsCheckedChanged -= DataIsExpandedChange;
+                oldData.IsCheckedChanged -= DataIsCheckedChangedChange;
             }
             if (DataContext != null && DataContext is MultiComboBoxData newData)
             {
-                newData.IsCheckedChanged += DataIsExpandedChange;
+                newData.IsCheckedChanged += DataIsCheckedChangedChange;
             }
         }
 
-        private void DataIsExpandedChange(object sender, bool IsExpanded)
+        private void DataIsCheckedChangedChange(object sender, bool isChecked)
         {
-            parent.Item_IsCheckedChanged((MultiComboBoxData)sender, this, IsExpanded);
+            parent.Item_IsCheckedChanged((MultiComboBoxData)sender, this, isChecked);
         }
     }
 
@@ -151,6 +155,8 @@
     /// </summary>
     public partial class MultiComboBox : ComboBox
     {
+        public static readonly string[] splits = new string[] { ", " };
+
         protected override DependencyObject GetContainerForItemOverride()
         {
             var item = new MultiComboBoxItem(this);
@@ -182,8 +188,10 @@
         {
             var selectedValues = SelectedValues?.ToString() ?? "";
             var showNames = this.Text?.ToString() ?? "";
-            List<string> values = string.IsNullOrEmpty(selectedValues) ? new List<string>() : selectedValues.Split(',').ToList();
-            List<string> names = string.IsNullOrEmpty(showNames) ? new List<string>() : showNames.Split(',').ToList();
+            List<string> values = string.IsNullOrEmpty(selectedValues) ? new List<string>() :
+                selectedValues.Split(splits, StringSplitOptions.RemoveEmptyEntries).ToList();
+            List<string> names = string.IsNullOrEmpty(showNames) ? new List<string>() :
+                showNames.Split(splits, StringSplitOptions.RemoveEmptyEntries).ToList();
             if (isChecked)
             {
                 values.Add(data.DataValue);
@@ -194,8 +202,8 @@
                 values.Remove(data.DataValue);
                 names.Remove(data.DisplayName);
             }
-            Text = string.Join(",", names);
-            SelectedValues = string.Join(",", values);
+            Text = string.Join(", ", names);
+            SelectedValues = string.Join(", ", values);
         }
     }
 }

--
Gitblit v1.9.1