RecipeView.xaml.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using Aitex.Core.UI.View.Common;
  2. using Aitex.Sorter.Common;
  3. using Aitex.Sorter.UI.ViewModel;
  4. using System;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using System.ComponentModel;
  8. using System.Globalization;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Windows;
  12. using System.Windows.Controls;
  13. using System.Windows.Data;
  14. using System.Windows.Documents;
  15. using System.Windows.Input;
  16. using System.Windows.Media;
  17. using System.Windows.Media.Imaging;
  18. using System.Windows.Navigation;
  19. using System.Windows.Shapes;
  20. namespace Aitex.Sorter.UI.Views
  21. {
  22. /// <summary>
  23. /// RecipeView.xaml 的交互逻辑
  24. /// </summary>
  25. public partial class RecipeView : UserControl, IBaseView
  26. {
  27. private RecipeViewModel recipeViewModel;
  28. public RecipeView()
  29. {
  30. InitializeComponent();
  31. recipeViewModel = new RecipeViewModel();
  32. DataContext = recipeViewModel;
  33. cbRecipeType.SelectedValuePath = "Key";
  34. cbRecipeType.DisplayMemberPath = "Value";
  35. cbRecipeType.ItemsSource = EnumHelper.ToDictionary<SorterRecipeType>();
  36. cbRecipeType.SelectedIndex = 0;
  37. IsVisibleChanged += RecipeView_IsVisibleChanged;
  38. }
  39. private void RecipeView_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
  40. {
  41. recipeViewModel.EnableTimer(IsVisible);
  42. if (IsVisible)
  43. {
  44. recipeViewModel.Refresh();
  45. lstRecipe.SelectedIndex = 0;
  46. }
  47. }
  48. private void btnAdd_Click(object sender, RoutedEventArgs e)
  49. {
  50. var inputName = new RecipeNameDialog();
  51. inputName.Owner = Window.GetWindow(this);
  52. if (inputName.ShowDialog() == true)
  53. {
  54. recipeViewModel.AddNewRecipe(inputName.RecipeName);
  55. lstRecipe.SelectedItem = inputName.RecipeName;
  56. }
  57. }
  58. private void lstRecipe_SelectionChanged(object sender, SelectionChangedEventArgs e)
  59. {
  60. recipeViewModel.LoadRecipe((string)lstRecipe.SelectedValue);
  61. }
  62. private void btnSave_Click(object sender, RoutedEventArgs e)
  63. {
  64. recipeViewModel.SaveRecipe();
  65. }
  66. private void btnDelete_Click(object sender, RoutedEventArgs e)
  67. {
  68. if ((recipeViewModel.CurrentRecipe != null && MessageBox.Show(string.Format("Are you sure you want to delete recipe [{0}]?", recipeViewModel.CurrentRecipe.Name), "Delete Recipe", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes))
  69. {
  70. recipeViewModel.DeleteRecipe();
  71. lstRecipe.SelectedIndex = lstRecipe.Items.Count - 1;
  72. }
  73. }
  74. private void btnCancel_Click(object sender, RoutedEventArgs e)
  75. {
  76. recipeViewModel.LoadRecipe((string)lstRecipe.SelectedValue);
  77. }
  78. private void btnRename_Click(object sender, RoutedEventArgs e)
  79. {
  80. if (recipeViewModel.CurrentRecipe != null)
  81. {
  82. var inputName = new RecipeNameDialog(recipeViewModel.CurrentRecipe.Name);
  83. inputName.Owner = Window.GetWindow(this);
  84. if (inputName.ShowDialog() == true)
  85. {
  86. recipeViewModel.RenameRecipe(inputName.RecipeName);
  87. lstRecipe.SelectedItem = inputName.RecipeName;
  88. }
  89. }
  90. }
  91. private void btnCopy_Click(object sender, RoutedEventArgs e)
  92. {
  93. if (recipeViewModel.CurrentRecipe != null)
  94. {
  95. var newName = string.Format("Copy of {0}", recipeViewModel.CurrentRecipe.Name);
  96. var inputName = new RecipeNameDialog(newName);
  97. inputName.Owner = Window.GetWindow(this);
  98. if (inputName.ShowDialog() == true)
  99. {
  100. recipeViewModel.CopyRecipe(inputName.RecipeName);
  101. lstRecipe.SelectedItem = inputName.RecipeName;
  102. }
  103. }
  104. }
  105. }
  106. public class RecipeLayoutConvert : IMultiValueConverter
  107. {
  108. public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  109. {
  110. var root = values[1] as FrameworkElement;
  111. if (values[0] != null)
  112. {
  113. var type = (SorterRecipeType)values[0];
  114. switch (type)
  115. {
  116. case SorterRecipeType.Transfer1To1:
  117. return root.FindResource("1To1");
  118. case SorterRecipeType.TransferNToN:
  119. return root.FindResource("NToN");
  120. case SorterRecipeType.Pack:
  121. return root.FindResource("Pack");
  122. case SorterRecipeType.Order:
  123. return root.FindResource("Order");
  124. case SorterRecipeType.Align:
  125. return root.FindResource("Default");
  126. case SorterRecipeType.ReadWaferId:
  127. return root.FindResource("Default");
  128. case SorterRecipeType.HostNToN:
  129. return root.FindResource("Host");
  130. default:
  131. break;
  132. }
  133. }
  134. return null;
  135. }
  136. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
  137. {
  138. throw new NotImplementedException();
  139. }
  140. }
  141. }