using AutoMapper; using CapMachine.Core; using CapMachine.Model; using CapMachine.Wpf.Dtos; using CapMachine.Wpf.Services; using Masuit.Tools; using Prism.Commands; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace CapMachine.Wpf.ViewModels { /// /// 逻辑规则配置的弹窗 /// public class DialogLogicRuleViewModel : DialogViewModel { public DialogLogicRuleViewModel(IFreeSql freeSql, IMapper mapper, LogicRuleService logicRuleService) { Title = "逻辑规则创建"; FreeSql = freeSql; Mapper = mapper; LogicRuleService = logicRuleService; //var Data = Mapper.Map>(LogicRuleService.LogicRuleDtos); ListLogicRuleDto = LogicRuleService.LogicRuleDtos; } public IFreeSql FreeSql { get; } public IMapper Mapper { get; } public LogicRuleService LogicRuleService { get; } private ObservableCollection _ListLogicRuleDto; /// /// 数据集合 /// public ObservableCollection ListLogicRuleDto { get { return _ListLogicRuleDto; } set { _ListLogicRuleDto = value; RaisePropertyChanged(); } } private LogicRuleDto _selectedRule; /// /// 当前选中的规则 /// public LogicRuleDto SelectedRule { get { return _selectedRule; } set { _selectedRule = value; RaisePropertyChanged(); } } private DelegateCommand _GridSelectionChangedCmd; /// /// 选中行数据命令 /// public DelegateCommand GridSelectionChangedCmd { set { _GridSelectionChangedCmd = value; } get { if (_GridSelectionChangedCmd == null) { _GridSelectionChangedCmd = new DelegateCommand((par) => GridSelectionChangedCmdMethod(par)); } return _GridSelectionChangedCmd; } } private void GridSelectionChangedCmdMethod(object par) { var selectedItem = par as LogicRuleDto; if (selectedItem != null) { //先判断是否是正确的集合数据,防止DataGrid的数据源刷新导致的触发事件 SelectedRule = selectedItem.DeepClone(); } ////选中的行数据 } private DelegateCommand _RuleCmd; /// /// 选中行数据命令 /// public DelegateCommand RuleCmd { set { _RuleCmd = value; } get { if (_RuleCmd == null) { _RuleCmd = new DelegateCommand((par) => RuleCmdMethod(par)); } return _RuleCmd; } } private void RuleCmdMethod(string par) { if (SelectedRule==null) { MessageBox.Show("选中后再操作数据"); return; } //先判断是否是正确的集合数据,防止DataGrid的数据源刷新导致的触发事件 switch (par) { case "Create": //SelectedRule LogicRuleService.AddRule(Mapper.Map(SelectedRule)); break; case "Update": LogicRuleService.UpdateRule(Mapper.Map(SelectedRule)); break; case "Delete": LogicRuleService.DeleteRule(SelectedRule.Name); break; default: break; } ////选中的行数据 } #region 基础弹窗配置 private string name; /// /// 名称 /// public string Name { get { return name; } set { name = value; RaisePropertyChanged(); } } private DelegateCommand saveCmd; /// /// 保存命令 /// public DelegateCommand SaveCmd { set { saveCmd = value; } get { if (saveCmd == null) { saveCmd = new DelegateCommand(() => SaveCmdMethod()); } return saveCmd; } } /// /// 保存命令方法 /// /// private void SaveCmdMethod() { DialogParameters pars = new DialogParameters { { "NewData", "" } }; RaiseRequestClose(new DialogResult(ButtonResult.OK, pars)); } private DelegateCommand cancelCmd; /// /// 保存命令 /// public DelegateCommand CancelCmd { set { cancelCmd = value; } get { if (cancelCmd == null) { cancelCmd = new DelegateCommand(() => CancelCmdMethod()); } return cancelCmd; } } /// /// 取消命令方法 /// /// private void CancelCmdMethod() { RaiseRequestClose(new DialogResult(ButtonResult.Cancel)); } /// /// 窗口打开时的传递的参数 /// /// public override void OnDialogOpened(IDialogParameters parameters) { Name = parameters.GetValue("Name"); } #endregion } }