using DevExpress.XtraLayout.Utils; using DevExpress.XtraRichEdit.Import.Html; using Mapster; namespace PBS.WinFrmUI.Hydro { public partial class QuickModelingPage : DocumentPage { public QuickModelingPage() { InitializeComponent(); this.layoutControl1.SetupLayoutControl(); } private QuickModelingViewModel _vm = null;//视图 private QuickModelingManager _wizard = null;//管理器 private List> _allPageList = null;//所有页面列表 private List> _bindingPageList = null;//绑定页面列表 /// /// 初始化数据源 /// public override async void InitialDataSource() { base.InitialDataSource(); _vm = new QuickModelingViewModel(); _vm.Place = new(); _vm.Facility = new(); _vm.Place.Name = "嘉定场所"; _vm.Facility.Name = "嘉定设施"; _vm.Facility.WaterSupply = eWaterSupply.Low; _vm.Facility.SupplyMode = eSupplyMode.Municipal; _vm.Facility.Floor = 7; _vm.Facility.FloorHeight = 3; _vm.Facility.Households = 40; _vm.Facility.MaxWaterDemand = 44; _vm.Facility.ConstantPressure = 22.5; _vm.Facility.TerminalPressure = 15; _vm.Facility.MaxHeight = 40; _vm.AssetsPackageList = await BLLFactory.Instance.GetAll(); InitialManager(); } //初始化管理器 private void InitialManager() { if (_vm == null) { return; } InitialPages(); InitialSteps(); _wizard = new QuickModelingManager(_vm); _wizard.SelectedPageChangedEvent += _wizard_SelectedPageChangedEvent; _wizard.SelectedPageStateChangedEvent += _wizard_SelectedPageStateChangedEvent; _wizard.InitialManager(_bindingPageList?.ToArray()); } //初始化页面 private void InitialPages() { if (_vm == null) { return; } _bindingPageList = new List>(); if (_allPageList == null) { _allPageList = new List>(); } this.navigationFrame.Pages.Clear(); var pagePlace = _allPageList.Find(x => x is QuickModelingPlaceWizardPage) as QuickModelingPlaceWizardPage; if (pagePlace == null) { pagePlace = new QuickModelingPlaceWizardPage(); pagePlace.Dock = DockStyle.Fill; _allPageList.Add(pagePlace); } _bindingPageList.Add(pagePlace); this.navigationFrame.AddPage(pagePlace); var pageFacility = _allPageList.Find(x => x is QuickModelingFacilityWizardPage) as QuickModelingFacilityWizardPage; if (pageFacility == null ) { pageFacility = new QuickModelingFacilityWizardPage(); pageFacility.Dock = DockStyle.Fill; _allPageList.Add(pageFacility); } _bindingPageList.Add(pageFacility); this.navigationFrame.AddPage(pageFacility); var pageModelEdit = _allPageList.Find(x => x is QuickModelingModelDrawWizardPage) as QuickModelingModelDrawWizardPage; if (pageModelEdit == null) { pageModelEdit = new QuickModelingModelDrawWizardPage(); pageModelEdit.Dock = DockStyle.Fill; _allPageList.Add(pageModelEdit); } _bindingPageList.Add(pageModelEdit); this.navigationFrame.AddPage(pageModelEdit); } //初始化步骤 private void InitialSteps() { this.stepProgressBar1.Items.Clear(); if (_bindingPageList != null && _bindingPageList.Count > 0) { foreach (var page in _bindingPageList) { if (page is QuickModelingPlaceWizardPage) { AddStepItem("场所"); } else if (page is QuickModelingFacilityWizardPage) { AddStepItem("设施"); } else if (page is QuickModelingModelDrawWizardPage) { AddStepItem("模型"); } } } } //选择页面改变 private void _wizard_SelectedPageChangedEvent(IWizardPageAsync page, int index) { this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForCancel.Visibility = page.AllowCancel ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForComplete.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never; this.navigationFrame.SelectedPageIndex = index; this.stepProgressBar1.SelectedItemIndex = index; //this.itemForTitle.Visibility = index > 0 ? LayoutVisibility.Always : LayoutVisibility.Never; } //选择页面状态改变 private void _wizard_SelectedPageStateChangedEvent(IWizardPageAsync page, int index) { this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForCancel.Visibility = page.AllowCancel ? LayoutVisibility.Always : LayoutVisibility.Never; this.itemForComplete.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never; //this.itemForTitle.Visibility = index > 0 ? LayoutVisibility.Always : LayoutVisibility.Never; } //上一步 private async void btnPrev_Click(object sender, EventArgs e) { if (_wizard != null) { await _wizard.Prev(); } } //下一步 private async void btnNext_Click(object sender, EventArgs e) { if (_wizard != null) { await _wizard.Next(); } } //取消 private async void btnCancel_Click(object sender, EventArgs e) { if (_wizard != null) { if (await _wizard.Cancel()) { //this.DialogResult = DialogResult.Cancel; this.Close(); } } } //完成 private async void btnComplete_Click(object sender, EventArgs e) { if (_wizard != null) { if (await _wizard.Complete()) { //this.ReloadDataEvent?.Invoke(_vm.Scheme); //this.DialogResult = DialogResult.OK; TipFormHelper.ShowInfo("快速建模成功,页面自动关闭!"); this.ClosePage(this.PageGuid); } } } /// /// 是否可以关闭 /// public override bool CanClose() { return true; } //添加步骤项 private void AddStepItem(string caption) { this.stepProgressBar1.BeginInit(); var item = new StepProgressBarItem(); item.ContentBlock2.Caption = caption; item.Options.Indicator.ActiveStateDrawMode = IndicatorDrawMode.Full; item.Options.Indicator.ActiveStateImageOptions.SvgImage = null; item.Options.Indicator.InactiveStateImageOptions.SvgImage = null; item.State = StepProgressBarItemState.Inactive; this.stepProgressBar1.Items.Add(item); this.stepProgressBar1.EndInit(); } } }