using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using SWS.CAD.ViewModels.myViewModelBase; using System.Windows.Input; using Telerik.Windows.Controls; using Prism.Ioc; using SWS.CAD.Views.Dialog; using Prism.Services.Dialogs; using SWS.Commons; using SWS.Model; namespace SWS.CAD.ViewModels { public class DialogCablePreAssignPreviewViewModel : DialogBase, IDialogAware { #region 字段 private ObservableCollection _PreAssignCables = new ObservableCollection(); /// /// 端子排参数信息列表 /// public ObservableCollection PreAssignCables { get { return _PreAssignCables; } set { _PreAssignCables = value; RaisePropertyChanged(nameof(PreAssignCables)); } } #endregion public string Title => ""; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } private List CablePreAssigns; public async void OnDialogOpened(IDialogParameters parameters) { //title = parameters.GetValue(GlobalObject.dialogPar.title.ToString()); title = "待分配的信号预览和统计"; _PreAssignCables = parameters.GetValue>(GlobalObject.dialogPar.para1.ToString()); } public override void ExecuteOKCommandAsync(object parameter) { if (PreAssignCables.Any(p => p.IsChecked == true)) { //打开窗体 IDialogParameters para = new Prism.Services.Dialogs.DialogParameters(); para.Add(GlobalObject.dialogPar.para1.ToString(), PreAssignCables); var _dialogService = GlobalObject._prismContainer.Resolve(); _dialogService.ShowDialog(nameof(DialogCablePreAssignResult), para, async (RES) => { if (RES.Result == ButtonResult.Yes) { } else if (RES.Result == ButtonResult.No) { } }); } //返回的结果 IDialogParameters res = new Prism.Services.Dialogs.DialogParameters(); //res.Add(GlobalObject.dialogPar.para1.ToString(), SelectedStripParametersInfo); RequestClose.Invoke(new DialogResult(ButtonResult.Yes, res)); } public override void ExecuteCloseCommand(object parameter) { if (parameter as string == "ClickNo") { DialogResult res = new DialogResult(ButtonResult.No); RequestClose.Invoke(res); } else { RequestClose.Invoke(new DialogResult(ButtonResult.Cancel)); } this.Dispose(); } #region 方法 public ICommand EditEndCmd => new DelegateCommand(EditEnd); /// /// 编辑结束事件 /// /// public virtual void EditEnd(object parameter) { //做个标记表示该项修改过 } #region 按钮 public ICommand ButtonCommand => new DelegateCommand(Button_Click); /// /// 页面左侧按钮 /// /// public virtual async void Button_Click(object parameter) { if (parameter.ToString().Equals("全选")) { foreach (var item in PreAssignCables) { item.IsChecked = true; } return; } if(parameter.ToString().Equals("清空")) { foreach (var item in PreAssignCables) { item.IsChecked = false; } return; } } #endregion #endregion } public class PreAssignCable: DialogBase { #region 页面渲染字段 private int _Index; /// /// 序号 /// public int Index { get { return _Index; } set { _Index = value; } } private bool _IsChecked; /// /// 选择 /// public bool IsChecked { get { return _IsChecked; } set { _IsChecked = value; RaisePropertyChanged(nameof(IsChecked)); } } private string _TagNumber; /// /// 电缆位号 /// public string TagNumber { get { return _TagNumber; } set { _TagNumber = value; } } private string _PreAssignIOType; /// /// 预分配的信号类型 /// public string PreAssignIOType { get { return _PreAssignIOType; } set { _PreAssignIOType = value; } } private string _CableClass; /// /// 是否为母线 /// public string CableClass { get { return _CableClass; } set { _CableClass = value; } } private string _ToPanel_TagNumber; /// /// 预分配的系统柜 /// public string ToPanel_TagNumber { get { return _ToPanel_TagNumber; } set { _ToPanel_TagNumber = value; } } public PreAssignCable() { } public PreAssignCable(ec_Cable ec_Cable) { TagNumber = ec_Cable.TagNumber; PreAssignIOType = ec_Cable.PreAssignIOType; CableClass =ec_Cable.CableClass.Equals("homerun") ? "是":"否"; ToPanel_TagNumber = ec_Cable.ToPanel!=null?ec_Cable.ToPanel.TagNumber:null; } #endregion } }