using DevExpress.Utils.Svg; using Mapster; using Yw; namespace HStation.WinFrmUI { /// /// /// public partial class CreateXhsSchemePressmeterChangePage : DevExpress.XtraEditors.XtraUserControl, Yw.WinFrmUI.IWizardPageAsync { /// /// /// public CreateXhsSchemePressmeterChangePage() { InitializeComponent(); this.xhsSchemePressmeterChangeListCtrl1.HydroViewEvent += XhsSchemePressmeterChangeListCtrl1_HydroViewEvent; this.xhsSchemePressmeterChangeListCtrl1.HydroChangeEvent += XhsSchemePressmeterChangeListCtrl1_HydroChangeEvent; } /// /// 页面状态改变事件 /// public event Action PageStateChangedEvent; private CreateXhsSchemeViewModel _vm = null;//操作对象 private List _allViewModelList = null;//所有视图列表 /// /// 初始化 /// public void InitialPage(CreateXhsSchemeViewModel vm) { if (vm == null) { return; } _vm = vm; _allViewModelList = new List(); if (vm.HydroInfo.Pressmeters != null && vm.HydroInfo.Pressmeters.Count > 0) { foreach (var visualViewModel in vm.AllVisualViewModelList) { if (visualViewModel.Vmo.Catalog == Yw.Hydro.ParterCatalog.Pressmeter) { var vmPressmeter = visualViewModel as HydroPressmeterViewModel; if (vmPressmeter != null) { _allViewModelList.Add(vmPressmeter); } } } } ShowBimfaceCtrl(); this.xhsSchemePressmeterChangeListCtrl1.SetBindingData(_allViewModelList); this.PageStateChangedEvent?.Invoke(); } #region Bimface //bimface控件 private CreateXhsSchemeBimfaceCtrl _bimfaceCtrl = null; //获取 bimface 控件 private async Task GetBimfaceCtrl() { if (_vm == null) { return default; } if (_bimfaceCtrl == null) { _bimfaceCtrl = new CreateXhsSchemeBimfaceCtrl(); _bimfaceCtrl.Dock = DockStyle.Fill; await _bimfaceCtrl.InitialData(_vm.Project, _vm.ProjectSite, _vm.HydroInfo, _vm.AllVisualViewModelList); _bimfaceCtrl.HydroMouseLeftClickEvent += (code) => { if (_allViewModelList == null || _allViewModelList.Count < 1) { return; } var index = _allViewModelList.FindIndex(x => x.Vmo.Code == code); this.xhsSchemePressmeterChangeListCtrl1.SetFocusedRow(index); }; _bimfaceCtrl.SelectVisualEvent += (code) => { if (_allViewModelList == null || _allViewModelList.Count < 1) { return; } var index = _allViewModelList.FindIndex(x => x.Vmo.Code == code); this.xhsSchemePressmeterChangeListCtrl1.SetFocusedRow(index); }; } return _bimfaceCtrl; } //显示 bimface 控件 private async void ShowBimfaceCtrl() { var bimfaceCtrl = await GetBimfaceCtrl(); this.panelControl1.Controls.Clear(); this.panelControl1.Controls.Add(bimfaceCtrl); } #endregion /// /// 允许上一步 /// public bool AllowPrev { get { return true; } } /// /// 允许下一步 /// public bool AllowNext { get { return true; } } /// /// 允许取消 /// public bool AllowCancel { get { return true; } } /// /// 允许完成 /// public bool AllowComplete { get { return false; } } /// /// 能否上一步 /// public Task CanPrev() { return Task.Run(() => true); } /// /// 能否下一步 /// public Task CanNext() { return Task.Run(() => true); } /// /// 能否关闭 /// public Task CanCancel() { return Task.Run(() => true); } /// /// 能否完成 /// public Task CanComplete() { return Task.Run(() => false); } //改变 private void XhsSchemePressmeterChangeListCtrl1_HydroChangeEvent(HydroPressmeterViewModel obj) { if (_vm == null) { return; } if (_vm.allChangeRecordList == null) { _vm.allChangeRecordList = new List(); } _vm.allChangeRecordList.Update(obj); } //定位 private void XhsSchemePressmeterChangeListCtrl1_HydroViewEvent(string obj) { if (string.IsNullOrEmpty(obj)) { return; } if (_vm == null) { return; } _bimfaceCtrl?.ZoomAndSelectComponent(obj); } } }