using DevExpress.XtraLayout.Utils; using Yw.EPAnet; namespace Yw.WinFrmUI { public partial class SetHydroCalcuPrefixCtrl : DevExpress.XtraEditors.XtraUserControl { public SetHydroCalcuPrefixCtrl() { InitializeComponent(); } /// /// 控件最小宽度 /// public const int ControlMinWidth = 350; /// /// 水力计算事件 /// public event Action HydroCalcuEvent; /// /// 水力查看事件 /// public event Action HydroViewEvent; private SetHydroCalcuPrefixViewModel _vm = null; private SetHydroCalcuPrefixManager _wizard; private Func _hydroInfoFunc = null; /// /// 初始化数据 /// public void InitialData(Func hydroInfoFunc) { _hydroInfoFunc = hydroInfoFunc; } /// /// 绑定数据 /// public void SetBindingData() { var hydroInfo = _hydroInfoFunc?.Invoke(); if (hydroInfo == null) { return; } this.groupForBottom.Visibility = LayoutVisibility.Always; this.navigationFrame.Controls.Clear(); this.navigationFrame.Pages.Clear(); var wizardPageList = new List>(); if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0) { var setWaterboxCalcuPrefixListCtrl = new SetWaterboxCalcuPrefixListCtrl(); setWaterboxCalcuPrefixListCtrl.ViewWaterboxEvent += (waterbox) => { if (waterbox == null) { return; } this.HydroViewEvent?.Invoke(waterbox); }; wizardPageList.Add(setWaterboxCalcuPrefixListCtrl); AddPage(setWaterboxCalcuPrefixListCtrl); } if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0) { var setPumpCalcuPrefixListCtrl = new SetPumpCalcuPrefixListCtrl(); setPumpCalcuPrefixListCtrl.ViewPumpEvent += (pump) => { if (pump == null) { return; } this.HydroViewEvent?.Invoke(pump); }; wizardPageList.Add(setPumpCalcuPrefixListCtrl); AddPage(setPumpCalcuPrefixListCtrl); } if (hydroInfo.Nozzles != null && hydroInfo.Nozzles.Count > 0) { var setNozzleCalcuPrefixListCtrl = new SetNozzleCalcuPrefixListCtrl(); setNozzleCalcuPrefixListCtrl.ViewNozzleEvent += (nozzle) => { if (nozzle == null) { return; } this.HydroViewEvent?.Invoke(nozzle); }; wizardPageList.Add(setNozzleCalcuPrefixListCtrl); AddPage(setNozzleCalcuPrefixListCtrl); } if (wizardPageList.Count < 1) { return; } _vm = new SetHydroCalcuPrefixViewModel(); _vm.HydroInfo = hydroInfo; _vm.FirstPage = wizardPageList.First(); _vm.LastPage = wizardPageList.Last(); _wizard = new SetHydroCalcuPrefixManager(_vm); _wizard.SelectedPageChangedEvent += (page, index) => { this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForCalcu.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never; this.navigationFrame.SelectedPageIndex = index; }; _wizard.SelectedPageStateChangedEvent += (page, index) => { this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForCalcu.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never; }; _wizard.InitialManager(wizardPageList.ToArray()); } /// /// /// public void SetFailedList(List allFailedList) { this.groupForBottom.Visibility = LayoutVisibility.Never; this.navigationFrame.Controls.Clear(); this.navigationFrame.Pages.Clear(); var ctrl = new HydroCalcuFailedCtrl(); ctrl.Dock = DockStyle.Fill; ctrl.SetBindingData(allFailedList); AddPage(ctrl); } //添加page private void AddPage(Control ctrl) { var page = new DevExpress.XtraBars.Navigation.NavigationPage(); this.navigationFrame.Controls.Add(page); this.navigationFrame.Pages.Add(page); ctrl.Dock = DockStyle.Fill; page.Controls.Add(ctrl); } //上一步 private void btnPrev_Click(object sender, EventArgs e) { if (_wizard != null) { _wizard.Prev(); } } //下一步 private void btnNext_Click(object sender, EventArgs e) { if (_wizard != null) { _wizard.Next(); } } //计算 private void btnComplete_Click(object sender, EventArgs e) { if (_wizard != null) { var bol = _wizard.Complete(); if (bol) { var hydroInfo = _hydroInfoFunc?.Invoke(); if (hydroInfo == null) { return; } this.HydroCalcuEvent?.Invoke(); } } } } }