using Caliburn.Micro; using Caliburn.Micro.Core; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using FurnaceUI.Models; using FurnaceUI.Views.Jobs; namespace FurnaceUI.Views.Editors { public class ParameterCommandViewModel : FurnaceUIViewModelBase { public ObservableCollection LoopStepNames { get; set; } public ObservableCollection JumpStepNames { get; set; } private string selectCommand; public string SelectCommand { get { return selectCommand; } set { selectCommand = value; this.NotifyOfPropertyChange(nameof(SelectCommand)); } } public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式 private Visibility _rdoSubRecipeVisibility = Visibility.Visible; public Visibility RdoSubRecipeVisibility { get => _rdoSubRecipeVisibility; set { _rdoSubRecipeVisibility = value; NotifyOfPropertyChange(nameof(RdoSubRecipeVisibility)); } } private Visibility _rdoLoopVisibility=Visibility.Visible; public Visibility RdoLoopVisibility { get => _rdoLoopVisibility; set { _rdoLoopVisibility = value; NotifyOfPropertyChange(nameof(RdoLoopVisibility)); } } public void SetCommand(string commandContent) { var windowManager = IoC.Get(); switch (commandContent) { //case "Call→System recipe": // RecipeCommandCallRecipeViewModel selectedSubRecipeViewModel = new RecipeCommandCallRecipeViewModel(); // selectedSubRecipeViewModel.SelectButtonContent = "System Recipe Select"; // selectedSubRecipeViewModel.SelectedSupportedProcessType = "SupportedProcessType"; // selectedSubRecipeViewModel.SelectedProcessType = "Process"; // (windowManager as WindowManager)?.ShowDialogWithTitle(selectedSubRecipeViewModel, null, "System Recipe"); // SelectRecipeCommand = $"CallSystemRecipe:{selectedSubRecipeViewModel.SelectedProcessRecipe}"; // break; case "Call Sub Recipe": RecipeCommandCallRecipeViewModel selectedSubRecipeViewModel = new RecipeCommandCallRecipeViewModel(); selectedSubRecipeViewModel.SelectButtonContent = "Sub Recipe Select"; selectedSubRecipeViewModel.SelectedSupportedProcessType = "SupportedSubType"; selectedSubRecipeViewModel.SelectedProcessType = "Sub"; (windowManager as WindowManager)?.ShowDialogWithTitle(selectedSubRecipeViewModel, null, "Sub Recipe"); SelectCommand = $"CallSubRecipe:{selectedSubRecipeViewModel.SelectedProcessRecipe}"; break; case "JumpStep": RecipeLoopSetViewModel recipeLoopSetViewModel = new RecipeLoopSetViewModel(); recipeLoopSetViewModel.StepNames = JumpStepNames; if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeLoopSetViewModel, null, "Jump")) { SelectCommand = "Jump:" + recipeLoopSetViewModel.SelectedText; } else { ((Window)GetView()).DialogResult = false; return; } break; case "Loop": recipeLoopSetViewModel = new RecipeLoopSetViewModel(); recipeLoopSetViewModel.StepNames = LoopStepNames; recipeLoopSetViewModel.LoopCountVisibility = Visibility.Visible; if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeLoopSetViewModel, null, "Loop")) { SelectCommand = "Loop:" + recipeLoopSetViewModel.SelectedText; } else { ((Window)GetView()).DialogResult = false; return; } break; default: SelectCommand = commandContent; break; } if (SelectCommand.Contains("CallSubRecipe")) { RdoSubRecipeVisibility = Visibility.Visible; RdoLoopVisibility = Visibility.Hidden; } else if (SelectCommand.Contains("Loop")) { RdoSubRecipeVisibility = Visibility.Hidden; RdoLoopVisibility = Visibility.Visible; } else { RdoSubRecipeVisibility = Visibility.Visible; RdoLoopVisibility = Visibility.Visible; } } public void CloseCommand() { ((Window)GetView()).DialogResult = false; } public void OKCommand() { ((Window)GetView()).DialogResult = true; } } }