using BPASmartClient.CustomResource.Pages.Model; using BPA.Helper; using BPASmartClient.JXJFoodBigStation.Model; using BPA.Helper; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BPASmartClient.JXJFoodBigStation.ViewModel { internal class SelectRecipesViewModel:NotifyBase { public SelectRecipesViewModel() { AllRecipes = new(); SelectRecipes.Clear(); foreach (var item in Json<LocalRecipe>.Data.SelectedRecipes) { SelectRecipes.Add(item); } if (Json<LocalRecipe>.Data.Recipes != null) { foreach (var item in Json<LocalRecipe>.Data.Recipes) { AllRecipes.Add(new RecipeDataWithCheck() { Recipe = item, IsSelected = SelectRecipes.Any(p => p.RecipeCode == item.RecipeCode) }); } } ConfirmCommand = new(() => { RefreshSelected(); ActionManage.GetInstance.Send("CloseSelectRecipesView"); }); CancelCommand = new(() => { ActionManage.GetInstance.Send("CloseSelectRecipesView"); }); AllSelectCommand = new(() => { foreach (var item in AllRecipes) { item.IsSelected = true; } }); AllCancelCommand = new(() => { foreach (var item in AllRecipes) { item.IsSelected = false; } }); } private void RefreshSelected() { SelectRecipes.Clear(); foreach (var item in AllRecipes) { if (item.IsSelected==true) { SelectRecipes.Add(item.Recipe); } } } public ObservableCollection<RecipeDataWithCheck> AllRecipes {get; set; } public static ObservableCollection<RecipeData> SelectRecipes { get; set; } = new ObservableCollection<RecipeData>(); /// <summary> /// 取消筛选,即关闭本窗口。 /// </summary> public BPARelayCommand CancelCommand { get; set; } /// <summary> /// 全选。 /// </summary> public BPARelayCommand AllSelectCommand { get; set; } /// <summary> /// 全部取消选择。 /// </summary> public BPARelayCommand AllCancelCommand { get; set; } /// <summary> /// 确认选择。 /// </summary> public BPARelayCommand ConfirmCommand { get; set; } /// <summary> /// 一个配方数据的包装类。 /// </summary> internal class RecipeDataWithCheck:NotifyBase { public RecipeData Recipe { get; set; } private bool _IsSelected; public bool IsSelected { get { return _IsSelected; } set { _IsSelected = value; OnPropertyChanged(); } } } } }