using DevExpress.Mvvm.Native; using Yw.Model; namespace HStation.WinFrmUI { /// /// 可见视图列表辅助类 /// public class SimulationVisualVmListHelper { /// /// /// public SimulationVisualVmListHelper(SimulationVisualListHelper helper) { _helper = helper; } private SimulationVisualListHelper _helper = null;//辅助类 private HydroModelInfo _hydroInfo = null;//水力信息 private Dictionary _dict;//字典 /// /// 初始化数据 /// public void InitialData(HydroModelInfo hydroInfo, HydroCalcuResult calcuResult = null) { _hydroInfo = hydroInfo; if (_hydroInfo == null) { return; } var allVisualDict = _helper.GetVisualDict(); if (allVisualDict != null && allVisualDict.Count > 0) { var allCalcuResultVisualDict = calcuResult?.GetVisualDict(); _dict = new Dictionary(); foreach (var visualKeyValue in allVisualDict) { var vm = HydroVisualViewModelBuilder.CreateVisualViewModel(visualKeyValue.Value, _hydroInfo); var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key); if (calcuVisualResult != null) { vm.UpdateCalcuProperty(calcuVisualResult); } _dict.Add(visualKeyValue.Key, vm); } } } /// /// 获取可见视图字典 /// public Dictionary GetVisualDict() { if (_hydroInfo == null) { return default; } return _dict; } /// /// 获取可见视图列表 /// public List GetVisualList() { if (_hydroInfo == null) { return default; } return _dict?.Values.ToList(); } /// /// 获取可见视图 /// public HydroVisualViewModel GetVisual(string code) { if (_dict == null || _dict.Count < 1) { return default; } if (_dict.ContainsKey(code)) { return _dict[code]; } return default; } /// /// 获取可见视图列表 /// public List GetVisualList(List codes) { var list = codes?.Select(x => GetVisual(x)).Where(x => x != null).ToList(); return list; } /// /// 获取可见视图 /// public HydroVisualViewModel GetVisual(HydroVisualInfo visual) { return GetVisual(visual?.Code); } /// /// 获取可见视图列表 /// public List GetVisualList(List visualList) { return visualList?.Select(x => GetVisual(x)).Where(x => x != null).ToList(); } /// /// 更新属性 /// public void UpdateProperty() { if (_hydroInfo == null) { return; } if (_dict == null || _dict.Count < 1) { return; } _dict.ForEach(x => x.Value.UpdateProperty()); } /// /// 更新属性 /// public void UpdateProperty(string code) { var visual = GetVisual(code); visual?.UpdateProperty(); } /// /// 更新属性 /// public void UpdateProperty(List codes) { var visualList = GetVisualList(codes); visualList?.ForEach(x => x.UpdateProperty()); } /// /// 更新属性 /// public void UpdateProperty(HydroVisualInfo visual) { UpdateProperty(visual?.Code); } /// /// 更新属性 /// public void UpdateProperty(List visualList) { var codes = visualList?.Select(x => x.Code).Distinct().ToList(); UpdateProperty(codes); } /// /// 更新计算属性 /// public void UpdateCalcuProperty(HydroCalcuResult calcuResult) { if (_hydroInfo == null) { return; } if (_dict == null || _dict.Count < 1) { return; } var allCalcuResultVisualDict = calcuResult?.GetVisualDict(); foreach (var visualKeyValue in _dict) { var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key); visualKeyValue.Value.UpdateCalcuProperty(calcuVisualResult); } } } }