using Aitex.Core.RT.DataCenter; using Aitex.Core.Util; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; using Venus_MainPages.Sequence; using Venus_MainPages.ViewModels; using Venus_Unity; namespace Venus_MainPages.Views { /// /// UserControl1.xaml 的交互逻辑 /// public partial class KeplerRecipeSequenceSelectView : Window { private FileNode pre_currentFileNode; private FileNode process_currentFileNode; private FileNode wtw_currentFileNode; private FileNode post_currentFileNode; SerializableDictionary recipeDictionary = new SerializableDictionary(); public string FullPath { get; private set; } string value; public KeplerRecipeSequenceSelectView(string path) { InitializeComponent(); value = path; } private void buttonCancel_Click(object sender, RoutedEventArgs e) { this.DialogResult = false; } private void buttonOK_Click(object sender, RoutedEventArgs e) { this.DialogResult = true; if (pre_currentFileNode != null && pre_currentFileNode.Parent.Name=="Clean") { recipeDictionary.Add("PreLotClean", pre_currentFileNode.Name); } else { recipeDictionary.Add("PreLotClean", ""); } if (process_currentFileNode != null && process_currentFileNode.Parent.Name=="Process") { recipeDictionary.Add("Process", process_currentFileNode.Name); } else { recipeDictionary.Add("Process", ""); } if (wtw_currentFileNode != null && wtw_currentFileNode.Parent.Name=="Clean") { recipeDictionary.Add("WTWClean", wtw_currentFileNode.Name); } else { recipeDictionary.Add("WTWClean", ""); } if (post_currentFileNode != null && post_currentFileNode.Parent.Name == "Clean") { recipeDictionary.Add("PostLotClean", post_currentFileNode.Name); } else { recipeDictionary.Add("PostLotClean", ""); } this.FullPath = SerializeHelper.Instance.DictionaryToString(recipeDictionary); } private void PreClean_PART_TREE_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e) { pre_currentFileNode = (FileNode)(sender as TreeView).SelectedItem; if (pre_currentFileNode.Parent.Name == "Clean") { preLotSelectedRecipeTextBlock.Text = pre_currentFileNode.Name; } else { preLotSelectedRecipeTextBlock.Text = ""; } } private void Process_PART_TREE_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e) { process_currentFileNode = (FileNode)(sender as TreeView).SelectedItem; if (process_currentFileNode.Parent.Name == "Process") { processSelectedRecipeTextBlock.Text = process_currentFileNode.Name; } else { processSelectedRecipeTextBlock.Text = ""; } } private void WTWClean_PART_TREE_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e) { wtw_currentFileNode = (FileNode)(sender as TreeView).SelectedItem; if (wtw_currentFileNode.Parent.Name == "Clean") { wtwSelectedRecipeTextBlock.Text = wtw_currentFileNode.Name; } else { wtwSelectedRecipeTextBlock.Text = ""; } } private void PostClean_PART_TREE_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e) { post_currentFileNode = (FileNode)(sender as TreeView).SelectedItem; if (post_currentFileNode.Parent.Name == "Clean") { postLotSelectedRecipeTextBlock.Text = post_currentFileNode.Name; } else { postLotSelectedRecipeTextBlock.Text = ""; } } private void Window_Loaded(object sender, RoutedEventArgs e) { var dictionary = SerializeHelper.Instance.StringToDictionary(value); if (dictionary.Keys.Contains("PreLotClean")) { preLotSelectedRecipeTextBlock.Text = dictionary["PreLotClean"]; foreach (var item in PreLotTreeView.Items) { var tvi = (TreeViewItem)PreLotTreeView.ItemContainerGenerator.ContainerFromItem(item); SetSelect(tvi, dictionary["PreLotClean"]); } } if (dictionary.Keys.Contains("Process")) { processSelectedRecipeTextBlock.Text = dictionary["Process"]; foreach (var item in ProcessTreeView.Items) { var tvi = (TreeViewItem)ProcessTreeView.ItemContainerGenerator.ContainerFromItem(item); SetSelect(tvi, dictionary["Process"]); } } if (dictionary.Keys.Contains("WTWClean")) { wtwSelectedRecipeTextBlock.Text = dictionary["WTWClean"]; foreach (var item in WTWTreeView.Items) { var tvi = (TreeViewItem)WTWTreeView.ItemContainerGenerator.ContainerFromItem(item); SetSelect(tvi, dictionary["WTWClean"]); } } if (dictionary.Keys.Contains("PostLotClean")) { postLotSelectedRecipeTextBlock.Text= dictionary["PostLotClean"]; foreach (var item in PostLotTreeView.Items) { var tvi = (TreeViewItem)PostLotTreeView.ItemContainerGenerator.ContainerFromItem(item); SetSelect(tvi, dictionary["PostLotClean"]); } } } void SetSelect(TreeViewItem tvi, string value) { if (tvi.Items.Count > 0) { foreach (var item in tvi.Items) { var tviChild = (TreeViewItem)tvi.ItemContainerGenerator.ContainerFromItem(item); var model = (FileNode)item; if (model.Name == value) { tviChild.IsSelected = true; break; } else { SetSelect(tviChild, value); } } } } private void PreLotBorder_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { foreach (var item in PreLotTreeView.Items) { var tvi = (TreeViewItem)PreLotTreeView.ItemContainerGenerator.ContainerFromItem(item); SetSelect(tvi, ""); } } private void ProcessBorder_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { foreach (var item in ProcessTreeView.Items) { var tvi = (TreeViewItem)ProcessTreeView.ItemContainerGenerator.ContainerFromItem(item); SetSelect(tvi, ""); } } private void WTWBorder_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { foreach (var item in WTWTreeView.Items) { var tvi = (TreeViewItem)WTWTreeView.ItemContainerGenerator.ContainerFromItem(item); SetSelect(tvi, ""); } } private void PostLotBorder_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { foreach (var item in PostLotTreeView.Items) { var tvi = (TreeViewItem)PostLotTreeView.ItemContainerGenerator.ContainerFromItem(item); SetSelect(tvi, ""); } } } }