using Aitex.Core.UI.View.Common; using Aitex.Sorter.Common; using Aitex.Sorter.UI.ViewModel; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Linq; using System.Text; 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 Aitex.Sorter.UI.Views { /// /// RecipeView.xaml 的交互逻辑 /// public partial class RecipeView : UserControl, IBaseView { private RecipeViewModel recipeViewModel; public RecipeView() { InitializeComponent(); recipeViewModel = new RecipeViewModel(); DataContext = recipeViewModel; cbRecipeType.SelectedValuePath = "Key"; cbRecipeType.DisplayMemberPath = "Value"; cbRecipeType.ItemsSource = EnumHelper.ToDictionary(); cbRecipeType.SelectedIndex = 0; IsVisibleChanged += RecipeView_IsVisibleChanged; } private void RecipeView_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { recipeViewModel.EnableTimer(IsVisible); if (IsVisible) { recipeViewModel.Refresh(); lstRecipe.SelectedIndex = 0; } } private void btnAdd_Click(object sender, RoutedEventArgs e) { var inputName = new RecipeNameDialog(); inputName.Owner = Window.GetWindow(this); if (inputName.ShowDialog() == true) { recipeViewModel.AddNewRecipe(inputName.RecipeName); lstRecipe.SelectedItem = inputName.RecipeName; } } private void lstRecipe_SelectionChanged(object sender, SelectionChangedEventArgs e) { recipeViewModel.LoadRecipe((string)lstRecipe.SelectedValue); } private void btnSave_Click(object sender, RoutedEventArgs e) { recipeViewModel.SaveRecipe(); } private void btnDelete_Click(object sender, RoutedEventArgs e) { 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)) { recipeViewModel.DeleteRecipe(); lstRecipe.SelectedIndex = lstRecipe.Items.Count - 1; } } private void btnCancel_Click(object sender, RoutedEventArgs e) { recipeViewModel.LoadRecipe((string)lstRecipe.SelectedValue); } private void btnRename_Click(object sender, RoutedEventArgs e) { if (recipeViewModel.CurrentRecipe != null) { var inputName = new RecipeNameDialog(recipeViewModel.CurrentRecipe.Name); inputName.Owner = Window.GetWindow(this); if (inputName.ShowDialog() == true) { recipeViewModel.RenameRecipe(inputName.RecipeName); lstRecipe.SelectedItem = inputName.RecipeName; } } } private void btnCopy_Click(object sender, RoutedEventArgs e) { if (recipeViewModel.CurrentRecipe != null) { var newName = string.Format("Copy of {0}", recipeViewModel.CurrentRecipe.Name); var inputName = new RecipeNameDialog(newName); inputName.Owner = Window.GetWindow(this); if (inputName.ShowDialog() == true) { recipeViewModel.CopyRecipe(inputName.RecipeName); lstRecipe.SelectedItem = inputName.RecipeName; } } } } public class RecipeLayoutConvert : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var root = values[1] as FrameworkElement; if (values[0] != null) { var type = (SorterRecipeType)values[0]; switch (type) { case SorterRecipeType.Transfer1To1: return root.FindResource("1To1"); case SorterRecipeType.TransferNToN: return root.FindResource("NToN"); case SorterRecipeType.Pack: return root.FindResource("Pack"); case SorterRecipeType.Order: return root.FindResource("Order"); case SorterRecipeType.Align: return root.FindResource("Default"); case SorterRecipeType.ReadWaferId: return root.FindResource("Default"); case SorterRecipeType.HostNToN: return root.FindResource("Host"); default: break; } } return null; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }