| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 | 
							- using ExcelLibrary.BinaryFileFormat;
 
- using PunkHPX8_MainPages.ViewModels;
 
- using PunkHPX8_Themes.UserControls;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows;
 
- using System.Windows.Controls;
 
- using System.Windows.Data;
 
- using System.Windows.Documents;
 
- using System.Windows.Input;
 
- using System.Windows.Media;
 
- using System.Windows.Media.Imaging;
 
- using System.Windows.Navigation;
 
- using System.Windows.Shapes;
 
- namespace PunkHPX8_MainPages.Views
 
- {
 
-     /// <summary>
 
-     /// RecipeManageView.xaml 的交互逻辑
 
-     /// </summary>
 
-     public partial class RecipeManageView : UserControl
 
-     {
 
-         public RecipeManageView()
 
-         {
 
-             InitializeComponent();
 
-         }
 
-         //private bool _isSelected;
 
-         //public bool IsSelected
 
-         //{
 
-         //    get { return _isSelected; }
 
-         //    set
 
-         //    {
 
-         //        _isSelected = value;
 
-         //    }
 
-         //}
 
-         List<string> FileNameList = new List<string>();
 
-         List<string> FilePathList = new List<string>();
 
-         List<CheckBox> checkBoxes = new List<CheckBox>();
 
-         public bool flag;
 
-         private void UserControl_Loaded(object sender, RoutedEventArgs e)
 
-         {
 
-             (this.DataContext as RecipeManageViewModel).LoadData("");
 
-             FileNameList.Clear();
 
-             FilePathList.Clear();
 
-         }
 
-         
 
-         private void CheckBox_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             if (sender is CheckBox _checkBox)
 
-             {
 
-                 // 获取当前 CheckBox 的父节点 TreeViewItem
 
-                 TreeViewItem parentItem = FindVisualParent<TreeViewItem>(_checkBox);
 
-                 if (_checkBox.Content.ToString() == "Engineering" || _checkBox.Content.ToString() == "Production")
 
-                 {
 
-                     bool IsRoot = (bool)_checkBox.DataContext.GetType().GetProperty("IsSelected").GetValue(_checkBox.DataContext);
 
-                     flag = false;
 
-                     // 遍历父节点下的所有子节点
 
-                     foreach (object item in parentItem.Items)
 
-                     {
 
-                         TreeViewItem childItem = parentItem.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
 
-                         if (childItem != null)
 
-                         {
 
-                             // 找到子节点下的 CheckBox
 
-                             CheckBox childCheckBox = FindVisualChild<CheckBox>(childItem);
 
-                             if (childCheckBox != null)
 
-                             {
 
-                                 // 设置子节点的选中状态与父节点一致
 
-                                 object SelectFilePath = _checkBox.DataContext.GetType().GetProperty("RecipeFullFileName").GetValue(childCheckBox.DataContext);
 
-                                 string _selectFilePath = SelectFilePath.ToString();
 
-                                 object SelectFilenName = _checkBox.DataContext.GetType().GetProperty("FileName").GetValue(childCheckBox.DataContext);
 
-                                 string _selectFileName = SelectFilenName.ToString();
 
-                                 childCheckBox.IsChecked = _checkBox.IsChecked;
 
-                                 if (_checkBox.IsChecked == true)
 
-                                 {
 
-                                     //FilePathList.Add(_selectFilePath);
 
-                                     //FileNameList.Add(_selectFileName);
 
-                                 }
 
-                                 else
 
-                                 {
 
-                                     FilePathList.Remove(_selectFilePath );
 
-                                     FileNameList.Remove(_selectFileName);
 
-                                 }
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     object SelectFilePath = _checkBox.DataContext.GetType().GetProperty("RecipeFullFileName").GetValue(_checkBox.DataContext);
 
-                     string _selectFilePath = SelectFilePath.ToString();
 
-                     object SelectFilenName = _checkBox.DataContext.GetType().GetProperty("FileName").GetValue(_checkBox.DataContext);
 
-                     string _selectFileName = SelectFilenName.ToString();
 
-                     if (flag==false&&FileNameList.Contains(_selectFileName))
 
-                     {
 
-                         (this.DataContext as RecipeManageViewModel).FilePaths = FilePathList;
 
-                         (this.DataContext as RecipeManageViewModel).FileNames = FileNameList;
 
-                         return;
 
-                     }
 
-                     if (_checkBox.IsChecked == true)
 
-                     {
 
-                         FilePathList.Add(_selectFilePath);
 
-                         FileNameList.Add(_selectFileName);
 
-                     }
 
-                     else
 
-                     {
 
-                         FilePathList.Remove(_selectFilePath);
 
-                         FileNameList.Remove(_selectFileName);
 
-                     }
 
-                     flag = true;
 
-                 }
 
-                 (this.DataContext as RecipeManageViewModel).FilePaths = FilePathList;
 
-                 (this.DataContext as RecipeManageViewModel).FileNames = FileNameList;
 
-             }
 
-         }
 
-         // 递归设置子节点的 CheckBox
 
-         private void SetChildrenCheckBoxes(CheckBox checkBox, bool isChecked)
 
-         {
 
-             TreeViewItem parentItem = FindVisualParent<TreeViewItem>(checkBox);
 
-             if (parentItem != null)
 
-             {
 
-                 foreach (object item in parentItem.Items)
 
-                 {
 
-                     TreeViewItem childItem = parentItem.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
 
-                     if (childItem != null)
 
-                     {
 
-                         CheckBox childCheckBox = FindVisualChild<CheckBox>(childItem);
 
-                         if (childCheckBox != null)
 
-                         {
 
-                             childCheckBox.IsChecked = isChecked;
 
-                             if (childItem.HasItems)
 
-                             {
 
-                                 SetChildrenCheckBoxes(childCheckBox, isChecked);
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         // 辅助方法,用于在可视树中查找指定类型的父节点或子节点
 
-         private T FindVisualParent<T>(DependencyObject obj) where T : DependencyObject
 
-         {
 
-             while (obj != null)
 
-             {
 
-                 if (obj is T)
 
-                 {
 
-                     return (T)obj;
 
-                 }
 
-                 obj = VisualTreeHelper.GetParent(obj);
 
-             }
 
-             return null;
 
-         }
 
-         private T FindVisualChild<T>(DependencyObject obj) where T : DependencyObject
 
-         {
 
-             for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
 
-             {
 
-                 DependencyObject child = VisualTreeHelper.GetChild(obj, i);
 
-                 if (child != null && child is T)
 
-                 {
 
-                     return (T)child;
 
-                 }
 
-                 else
 
-                 {
 
-                     T childOfChild = FindVisualChild<T>(child);
 
-                     if (childOfChild != null)
 
-                     {
 
-                         return childOfChild;
 
-                     }
 
-                 }
 
-             }
 
-             return null;
 
-         }
 
-         private void DeleteSelectedAll(object sender, RoutedEventArgs e)
 
-         {
 
-         }
 
-         private void treeView_Selected(object sender, RoutedEventArgs e)
 
-         {
 
-         }
 
-     }
 
- }
 
 
  |