using BPASmartClient.FoodStationTest.Model; using BPA.Helper; using BPA.Helper; using System.Collections.ObjectModel; using System.Linq; namespace BPASmartClient.FoodStationTest.ViewModel { internal class SelectRecipesViewModel : NotifyBase { public SelectRecipesViewModel() { AllRecipes = new(); foreach (var item in Json<LocalRecipeDataColl>.Data.SelectedRecipes) { SelectRecipes.Add(item); } if (Json<LocalRecipeDataColl>.Data.Recipes != null) { foreach (var item in Json<LocalRecipeDataColl>.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<RemoteRecipeData> SelectRecipes { get; set; } = new ObservableCollection<RemoteRecipeData>(); /// <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; } internal class RecipeDataWithCheck : NotifyBase { public RemoteRecipeData Recipe { get; set; } private bool _IsSelected; public bool IsSelected { get { return _IsSelected; } set { _IsSelected = value; OnPropertyChanged(); } } } } }