using Bricscad.ApplicationServices; using Bricscad.EditorInput; using Prism.Events; using Prism.Ioc; using Prism.Services.Dialogs; using SWS.CAD.Base; using SWS.CAD.CADFunc; using SWS.CAD.Event; using SWS.CAD.Views; using SWS.Commons; using SWS.Model; using SWS.Service; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Windows; using System.Windows.Input; using System.Windows.Media; using Telerik.Windows.Controls; using Unity; using AttributeCollection = System.ComponentModel.AttributeCollection; using MessageBox = System.Windows.MessageBox; using Visibility = System.Windows.Visibility; namespace SWS.CAD.ViewModels { public class RightPanelViewModel : ViewModelBase { #region binding private ObservableCollection _objecttypeP; public ObservableCollection objecttypeP { get { return _objecttypeP; } set { _objecttypeP = value; RaisePropertyChanged(nameof(objecttypeP)); } } private ObservableCollection _listShowProperty; /// /// 显示属性列表 /// public ObservableCollection listShowProperty { get { return _listShowProperty; } set { _listShowProperty = value; RaisePropertyChanged(nameof(listShowProperty)); } } private ObservableCollection _listObjects; /// /// 属性列表 /// public ObservableCollection listObjects { get { return _listObjects; } set { _listObjects = value; RaisePropertyChanged(nameof(listObjects)); } } private PropertyObjectModel _SelectObject; /// /// 选中属性 /// public PropertyObjectModel SelectObject { get { return _SelectObject; } set { _SelectObject = value; RaisePropertyChanged(nameof(SelectObject)); changeProObj(value); } } private string _objectTypeName; public string objectTypeName { get { return _objectTypeName; } set { if (string.IsNullOrEmpty(value)) { PropertyVisibility = Visibility.Collapsed; } else { PropertyVisibility = Visibility.Visible; } _objectTypeName = value; RaisePropertyChanged(nameof(objectTypeName)); } } private Visibility _PropertyVisibility = Visibility.Collapsed; /// /// 是否显示属性名称框 /// public Visibility PropertyVisibility { get { return _PropertyVisibility; } set { _PropertyVisibility = value; RaisePropertyChanged(nameof(PropertyVisibility)); } } private List listEnginedata = new List(); private ImageSource _lockImage; /// /// 属性锁 /// public ImageSource lockImage { get { return _lockImage; } set { _lockImage = value; RaisePropertyChanged(nameof(lockImage)); } } private ImageSource _lock2Image; /// /// 属性锁 Enable为false时灰色 /// public ImageSource lock2Image { get { return _lock2Image; } set { _lock2Image = value; RaisePropertyChanged(nameof(lock2Image)); } } private ImageSource _historyImage; /// /// 历史属性 /// public ImageSource historyImage { get { return _historyImage; } set { _historyImage = value; RaisePropertyChanged(nameof(historyImage)); } } private ImageSource _history2Image; /// /// 历史属性 Enable为false时灰色 /// public ImageSource history2Image { get { return _history2Image; } set { _history2Image = value; RaisePropertyChanged(nameof(history2Image)); } } private ImageSource _qiehuanImage; /// /// 切换属性视图 /// public ImageSource qiehuanImage { get { return _qiehuanImage; } set { _qiehuanImage = value; RaisePropertyChanged(nameof(qiehuanImage)); } } private string _lockTooltip = "属性未锁定"; /// /// 属性锁提示文本 /// public string lockTooltip { get { return _lockTooltip; } set { _lockTooltip = value; RaisePropertyChanged(nameof(lockTooltip)); } } private bool _isLocked; /// /// 是否锁定属性 /// public bool isLocked { get { return _isLocked; } set { isEnabledGridProterty = !value; isEnabledHistory = !value; _isLocked = value; RaisePropertyChanged(nameof(isLocked)); } } private bool _isEnabledGridProterty = true; /// /// Grid是否启用 /// public bool isEnabledGridProterty { get { return _isEnabledGridProterty; } set { _isEnabledGridProterty = value; RaisePropertyChanged(nameof(isEnabledGridProterty)); } } private bool _isEnabledLock = false; /// /// 属性锁、查看属性历史 功能是否启用 /// public bool isEnabledLock { get { return _isEnabledLock; } set { _isEnabledLock = value; RaisePropertyChanged(nameof(isEnabledLock)); } } private bool _isEnabledHistory = false; /// /// 查看属性历史 功能是否启用 /// public bool isEnabledHistory { get { return _isEnabledHistory; } set { _isEnabledHistory = value; RaisePropertyChanged(nameof(isEnabledHistory)); } } private string _CurrentPropertyName ; /// /// 选中的属性名称 /// public string CurrentPropertyName { get { return _CurrentPropertyName; } set { _CurrentPropertyName = value; RaisePropertyChanged(nameof(CurrentPropertyName)); } } private bool _isBasicGroup = true; /// /// 是否属性常用分组 /// public bool isBasicGroup { get { return _isBasicGroup; } set { _isBasicGroup = value; RaisePropertyChanged(nameof(isBasicGroup)); } } #endregion #region 绑定事件 /// /// 历史属性 /// public ICommand Command_History { get; } /// /// 属性锁 /// public ICommand Command_Lock { get; } /// /// 切换属性视图 /// public ICommand Command_Qiehuan { get; } #endregion ObjectTypeService _objectTypeService { get; set; } private readonly IDialogService _dialogService; private Editor _editor = null; private Document doc = null; private BackgroundWorker _bgwGetProperty = new BackgroundWorker(); private DateTime workTime = DateTime.Now; private List handles = new List(); private EnginedataService _enginedataService; private ImageSource lockImg; private ImageSource unlockImg; IEventAggregator eventAggregator; public RightPanelViewModel(IEventAggregator eventAggregator) { this.eventAggregator = eventAggregator; _objectTypeService = GlobalObject.container.Resolve(); _enginedataService = GlobalObject.container.Resolve(); _dialogService = GlobalObject._prismContainer.Resolve(); eventAggregator.GetEvent().Subscribe(onTypeChange, ThreadOption.UIThread, true); eventAggregator.GetEvent().Subscribe(onTagChange, ThreadOption.UIThread, true); eventAggregator.GetEvent().Subscribe(onDrawingChange, ThreadOption.UIThread, true); eventAggregator.GetEvent().Subscribe(onSelectPixels, ThreadOption.UIThread, true); eventAggregator.GetEvent().Subscribe(onPropertyChange, ThreadOption.UIThread, true); eventAggregator.GetEvent().Subscribe(onGetProperty, ThreadOption.UIThread, true); listShowProperty = new ObservableCollection(); listObjects = new ObservableCollection(); _bgwGetProperty.DoWork += bgwGetProperty_DoWork; lockImg = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"SWS.CAD.Images.Lock.png"); unlockImg = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"SWS.CAD.Images.UnLock.png"); lockImage = lockImg; lock2Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"SWS.CAD.Images.Lock2.png"); historyImage = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"SWS.CAD.Images.history.png"); history2Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"SWS.CAD.Images.history2.png"); qiehuanImage = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"SWS.CAD.Images.qiehuan.png"); Command_History = new DelegateCommand(onHistory); Command_Lock = new DelegateCommand(onLock); Command_Qiehuan = new DelegateCommand(onQiehuan); } #region 在图纸上选择句柄,获取属性 /// /// 获取选中句柄属性 /// /// private void onGetProperty(List hands) { handles = hands; workTime = DateTime.Now; if (!_bgwGetProperty.IsBusy) { _bgwGetProperty.RunWorkerAsync(); } } private async void bgwGetProperty_DoWork(object sender, DoWorkEventArgs e) { while (true) { try { var sp = DateTime.Now - workTime; if (sp.TotalMilliseconds > 500)//选中句柄500毫秒后去获取属性 { ObservableCollection listProObj = new ObservableCollection(); GlobalObject.currentTagNumber = ""; var dwgName = General.GetDwgName(); var dwg = GlobalObject.ListDwgOpened.FirstOrDefault(a => a.Path == dwgName); if (dwg == null) { return; } eventAggregator.GetEvent().Publish(dwg.Id); //var handles = General.GetSelectedHandles();//通过此方法获取到选中句柄后,会自动取消选中状态 foreach (var handlId in handles) { var listEnginedataTemp = new List(); var dwgFileId = dwg.Id; var res = await _objectTypeService.GetTagInfosByPixels(dwgFileId, handlId);//GlobalObject.drawingFileId if (res == null || !res.Any()) { continue; } if (res.Count == 1) { var item = res[0]; var objTypeName = item.ObjectTypeName; GlobalObject.currentTagNumber = item.tags[0].TagNumber; var proObj = listProObj.FirstOrDefault(a => a.objectTypeName == objTypeName); if (proObj != null) { proObj.listHandels.Add(handlId); #region 属性 var listProData = item.tags[0].EngineDataProperty; foreach (var data in listProData) { var pro = proObj.listBasicTypeP.FirstOrDefault(a => a.DisplayText == data.PropertyName); if (pro != null) { pro.DetailId += ";" + data.EngineDataPropertyID; if (pro.PropertyValue != data.PropertyValue) { pro.PropertyValue = "*"; //当属性值不一致时显示*号 } } #region 把属性加到缓存列表里,后续修改属性值要用到 var enginedata = new ec_enginedata() { EngineDataID = data.EngineDataID, TagNumber = item.tags[0].TagNumber, ObjectTypeID = item.ObjectTypeID, }; List listProperty = new List() { new ec_enginedata_property(){ EngineDataPropertyID=data.EngineDataPropertyID, EngineDataID= data.EngineDataID, PropertyName=data.PropertyName, PropertyValue=data.PropertyValue, MeasuringUnit=data.MeasuringUnit } }; enginedata.EngineDataProperty = listProperty; listEnginedataTemp.Add(enginedata); #endregion } proObj.listData.Add(new ProtertyData() { listEnginedata = listEnginedataTemp }); #endregion } else { proObj = new PropertyObjectModel(); proObj.listHandels.Add(handlId); proObj.objectTypeName = objTypeName; proObj.tagNumber = item.tags[0].TagNumber; proObj.CreateUserID = item.tags[0].CreateUserID; proObj.EngineDataID = item.tags[0].EngineDataID; isLocked = item.tags[0].Locked == "1" ? true : false; changeLocked(isLocked, proObj.CreateUserID); isEnabledLock = true; #region 属性 var model = new propertyModel() { DisplayText = "位号", PropertyValue = item.tags[0].TagNumber, ControlTypeName = PROPERTYType.TextBox, IsEnable = false, IsBasicGroup=true, GroupName = item.props[0].PropertyGroupName }; proObj.listBasicTypeP.Add(model); var listProData = item.tags[0].EngineDataProperty; foreach (var p in item.props) { model = new propertyModel() { Id = p.PropertyID, DisplayText = p.PropertyName, PropertyValue = p.DefaultValue, IsReturnChanged = true, IsBasicGroup = p.BasicGroup, GroupName = p.PropertyGroupName }; switch (p.PropertyType) { case "00001"://字符 case "00004"://扩展程序 model.ControlTypeName = PROPERTYType.TextBox; break; case "00002"://数字(含小数、负数) model.ControlTypeName = PROPERTYType.Number; break; case "00005"://uom 单位类型 ,例:10 A model.UnitTypeId = p.MeasuringUnitTypeID; model.ControlTypeName = PROPERTYType.Folder; break; case "00003"://单选下拉框 //if (model.DisplayText == "电缆规格") //{ model.ControlTypeName = PROPERTYType.MultiSelectComboBox; } //else //{ // model.ControlTypeName = PROPERTYType.ComboBox; //} model.ControlTypeName = PROPERTYType.ComboBox; if (!string.IsNullOrEmpty(p.EnumDataCode)) { var data = p.EnumDataCode.Split(','); Dictionary items = new Dictionary(); foreach (var k in data) { items.Add(k, k); } model.Item = items; } break; case "00006"://多选下拉框 model.ControlTypeName = PROPERTYType.MultiSelectComboBox; if (!string.IsNullOrEmpty(p.EnumDataCode)) { var dataMult = p.EnumDataCode.Split(','); Dictionary itemsMult = new Dictionary(); foreach (var k in dataMult) { itemsMult.Add(k, k); } model.Item = itemsMult; } break; } var pro = listProData.FirstOrDefault(a => a.PropertyName == p.PropertyName); if (pro != null) { model.Id = pro.EngineDataID; model.DetailId = pro.EngineDataPropertyID; model.PropertyValue = pro.PropertyValue; model.Unit = pro.MeasuringUnit; #region 把属性加到缓存列表里,后续修改属性值要用到 var enginedata = new ec_enginedata() { EngineDataID = pro.EngineDataID, TagNumber = item.tags[0].TagNumber, ObjectTypeID = item.ObjectTypeID, }; List listProperty = new List() { new ec_enginedata_property(){ EngineDataPropertyID=pro.EngineDataPropertyID, EngineDataID= pro.EngineDataID, PropertyName=pro.PropertyName, PropertyValue=pro.PropertyValue, MeasuringUnit=pro.MeasuringUnit } }; enginedata.EngineDataProperty = listProperty; listEnginedataTemp.Add(enginedata); #endregion } proObj.listBasicTypeP.Add(model); } proObj.listData.Add(new ProtertyData() { listEnginedata = listEnginedataTemp }); #endregion listProObj.Add(proObj); } } } SelectObject = null; listObjects = listProObj; if (listObjects.Any()) { SelectObject = listObjects[0]; listShowProperty = SelectObject.listBasicTypeP; } else { listShowProperty = new ObservableCollection(); } break; } } catch (Exception ex) { MessageBox.Show(ex.Message); break; } } } /// /// 下拉框选择不一样的元件类型 /// private void changeProObj(PropertyObjectModel proObj) { if (proObj != null) { listShowProperty = proObj.listBasicTypeP; } } #endregion /// /// 左边列表选中元件类型,右边出现对应属性,左下方出现图元列表 /// /// private async void onTypeChange(Model.TreeModel node) { if (node != null) { #region 获取属性,并显示出来 listShowProperty.Clear(); var listBasic = new ObservableCollection(); var res = await _objectTypeService.GetObjectTypePById(node.ID); if (res == null || !res.Any()) { listObjects = new ObservableCollection() { new PropertyObjectModel(){ objectTypeName=node.Text, listBasicTypeP=listBasic, } }; SelectObject = listObjects[0]; isEnabledLock = false; return; } #region 添加位号列表 //位号下拉列表 var listTag = await _objectTypeService.GetTagNumberById_Brief(node.ID); var pro = new propertyModel() { DisplayText = "位号", ControlTypeName = PROPERTYType.ComboBox, IsEnable = true, IsBasicGroup = true, GroupName = res[0].PropertyGroupName }; if (listTag.Any()) { Dictionary items = new Dictionary(); foreach (var dto in listTag) { if (string.IsNullOrEmpty(dto.Text)) { continue; } if (items.ContainsKey(dto.Text)) { continue; } items.Add(dto.Text, dto.Text); } pro.Item = items; listBasic.Add(pro); } #endregion //添加属性 foreach (var p in res) { var model = new propertyModel() { Id = p.PropertyID, DisplayText = p.PropertyNameEN, PropertyValue = p.DefaultValue, Unit = p.DefaultUnitName, UnitId = p.DefaultUnit, UnitTypeId = p.MeasuringUnitTypeID, IsBasicGroup = p.BasicGroup, GroupName = p.PropertyGroupName, ControlTypeName = PROPERTYType.TextBox }; switch (p.PropertyType) { case "00001"://字符 case "00004"://扩展程序 model.ControlTypeName = PROPERTYType.TextBox; break; case "00002"://数字(含小数、负数) model.ControlTypeName = PROPERTYType.Number; break; case "00005"://uom 单位类型 ,例:10 A model.UnitTypeId = p.MeasuringUnitTypeID; model.ControlTypeName = PROPERTYType.Folder; break; case "00003"://单选下拉框 model.ControlTypeName = PROPERTYType.ComboBox; if (!string.IsNullOrEmpty(p.EnumDataCode)) { var data = p.EnumDataCode.Split(','); Dictionary items = new Dictionary(); foreach (var e in data) { items.Add(e, e); } model.Item = items; } break; case "00006"://多选下拉框 model.ControlTypeName = PROPERTYType.MultiSelectComboBox; if (!string.IsNullOrEmpty(p.EnumDataCode)) { var dataMult = p.EnumDataCode.Split(','); Dictionary itemsMult = new Dictionary(); foreach (var e in dataMult) { itemsMult.Add(e, e); } model.Item = itemsMult; } break; } listBasic.Add(model); } listObjects = new ObservableCollection() { new PropertyObjectModel(){ objectTypeName=node.Text, listBasicTypeP=listBasic, } }; SelectObject = listObjects[0]; isEnabledLock = false; #endregion } } /// /// 左边列表选中Tag类型,右边出现对应属性 /// /// private async void onTagChange(Model.TreeModel node) { if (node != null) { objectTypeName = node.Text; #region 获取属性,并显示出来 listShowProperty.Clear(); var listBasic = new ObservableCollection(); var res = await _objectTypeService.GetTagInfosByTags(node.Text); if (!res.Any()) { listShowProperty = listBasic; return; } if (res.Count == 1) { var item = res[0]; ShowProperty(item); } else { listShowProperty = listBasic; } #endregion } } /// /// 左边列表选中图纸,右边出现图纸对应属性 /// /// private void onDrawingChange(SWS.Model.ec_drawing_file dwgObj) { if (dwgObj != null) { objectTypeName = dwgObj.DrawingFileName; #region 获取属性,并显示出来 listShowProperty.Clear(); var listBasic = new ObservableCollection(); foreach (System.Reflection.PropertyInfo pro in dwgObj.GetType().GetProperties()) { AttributeCollection attributes = TypeDescriptor.GetProperties(dwgObj)[pro.Name].Attributes; DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)]; if (!string.IsNullOrEmpty(myAttribute.Description)) { var model = new propertyModel(); model.DisplayText = myAttribute.Description; var v = dwgObj.GetType().GetProperty(pro.Name).GetValue(dwgObj, null); model.PropertyValue = v == null ? "" : v.ToString(); model.ControlTypeName = PROPERTYType.TextBox; model.IsBasicGroup = true; model.IsEnable = false; var groupAttr = (GroupAttribute)attributes[typeof(GroupAttribute)]; if (groupAttr != null) { model.GroupName = groupAttr.GroupName; } listBasic.Add(model); } } listObjects = new ObservableCollection() { new PropertyObjectModel(){ objectTypeName=dwgObj.DrawingFileName} }; SelectObject = listObjects[0]; listShowProperty = listBasic; isEnabledLock = false; #endregion } } #region 图纸上选中元素,则取元素句柄对应属性 /// /// 图纸上选中元素,则取元素句柄对应属性 /// /// private async void onSelectPixels(string handlId) { listShowProperty.Clear(); objectTypeName = ""; GlobalObject.currentTagNumber = ""; var dwgName = General.GetDwgName(); var dwg = GlobalObject.ListDwgOpened.FirstOrDefault(a => a.Path == dwgName); if (dwg == null) { return; } var listBasic = new ObservableCollection(); var dwgFileId = dwg.Id; var res = await _objectTypeService.GetTagInfosByPixels(dwgFileId, handlId);//GlobalObject.drawingFileId if (!res.Any()) { listShowProperty = listBasic; return; } if (res.Count == 1) { var item = res[0]; ShowProperty(item); } else { listShowProperty = listBasic; } } #endregion #region 把位号的属性显示出来 /// /// 把位号的属性显示出来 /// /// /// 是否属性值改变后,返回事件更新到服务器 private void ShowProperty(SWS.Model.ec_objecttype item, bool isReturnChanged = false) { var listBasic = new ObservableCollection(); listEnginedata.Clear(); listObjects = new ObservableCollection() { new PropertyObjectModel(){ objectTypeName=item.ObjectTypeName} }; SelectObject = listObjects[0]; if (item.tags.Any()) { GlobalObject.currentTagNumber = item.tags[0].TagNumber; var model = new propertyModel() { DisplayText = "位号", PropertyValue = item.tags[0].TagNumber, ControlTypeName = PROPERTYType.TextBox, IsEnable = false, IsBasicGroup = true, GroupName = item.props[0].PropertyGroupName }; listBasic.Add(model); } var listPro = item.tags[0].EngineDataProperty; foreach (var p in item.props) { var model = new propertyModel() { Id = p.PropertyID, DisplayText = p.PropertyName, PropertyValue = p.DefaultValue, IsReturnChanged = isReturnChanged, IsBasicGroup = p.BasicGroup, GroupName = p.PropertyGroupName }; switch (p.PropertyType) { case "00001"://字符 case "00004"://扩展程序 model.ControlTypeName = PROPERTYType.TextBox; break; case "00002"://数字(含小数、负数) model.ControlTypeName = PROPERTYType.Number; break; case "00005"://uom 单位类型 ,例:10 A //model.UnitId= p.DefaultUnitName; //model.Unit = p.DefaultUnitName; model.UnitTypeId = p.MeasuringUnitTypeID; model.ControlTypeName = PROPERTYType.Folder; break; case "00003"://单选下拉框 //if (model.DisplayText == "设备厂家") //{ model.ControlTypeName = PROPERTYType.MultiSelectComboBox; } //else //{ // model.ControlTypeName = PROPERTYType.ComboBox; //} model.ControlTypeName = PROPERTYType.ComboBox; if (!string.IsNullOrEmpty(p.EnumDataCode)) { var data = p.EnumDataCode.Split(','); Dictionary items = new Dictionary(); foreach (var e in data) { items.Add(e, e); } model.Item = items; } break; case "00006"://多选下拉框 model.ControlTypeName = PROPERTYType.MultiSelectComboBox; var dataMult = p.EnumDataCode.Split(','); Dictionary itemsMult = new Dictionary(); foreach (var e in dataMult) { itemsMult.Add(e, e); } model.Item = itemsMult; break; } var pro = listPro.FirstOrDefault(a => a.PropertyName == p.PropertyName); if (pro != null) { model.Id = pro.EngineDataID; model.DetailId = pro.EngineDataPropertyID; model.PropertyValue = pro.PropertyValue; model.Unit = pro.MeasuringUnit; #region 把属性加到缓存列表里,后续修改属性值要用到 //var enginedata = new ec_enginedata() //{ // EngineDataID = pro.EngineDataID, // TagNumber = item.tags[0].TagNumber, // ObjectTypeID = item.ObjectTypeID, //}; //List listProperty = new List() // { // new ec_enginedata_property(){ // EngineDataPropertyID=pro.EngineDataPropertyID, // EngineDataID= pro.EngineDataID, // PropertyName=pro.PropertyName, // PropertyValue=pro.PropertyValue, // MeasuringUnit=pro.MeasuringUnit // } }; //enginedata.EngineDataProperty = listProperty; //listEnginedata.Add(enginedata); #endregion } listBasic.Add(model); } listShowProperty = listBasic; isEnabledLock = false; } #endregion #region 属性值改变事件 /// /// 属性值改变事件 /// /// private async void onPropertyChange(propertyModel model) { SWS.Model.ec_enginedata dto = null; string strOldValue = ""; string strOldUnit = ""; if (SelectObject == null) { return; } if (model.PropertyValue=="*") { return; } foreach (var data in SelectObject.listData) { foreach (var enginedata in data.listEnginedata) { var pro = enginedata.EngineDataProperty.FirstOrDefault(a => model.DetailId.Contains(a.EngineDataPropertyID)); if (pro != null) { strOldValue = pro.PropertyValue; strOldUnit = pro.MeasuringUnit; pro.PropertyValue = model.PropertyValue; pro.MeasuringUnit = model.Unit; dto = enginedata; break; } } if (dto != null && (strOldValue != model.PropertyValue || strOldUnit != model.Unit)) { var flag = await _objectTypeService.UpdatePixelAndPropBatch(new List() { dto }); string strUnit = string.IsNullOrEmpty(model.Unit) ? "" : $",单位:{model.Unit}"; General.SendMessage($"属性:{model.DisplayText},值:{model.PropertyValue} {strUnit} 保存成功!"); #region 更新列表里属性数据 var item = listShowProperty.FirstOrDefault(a => a.DetailId == model.DetailId); if (item != null) { item.PropertyValue = model.PropertyValue; } item.PropertyValue = model.PropertyValue; } #endregion //刷新UI if (model.IsRefreshUI) { listShowProperty = new ObservableCollection(listShowProperty); } } } #endregion #region 历史属性 /// /// 历史属性 /// private void onHistory(object obj) { if (SelectObject == null ||string.IsNullOrEmpty(SelectObject.tagNumber)) { return; } if ( string.IsNullOrEmpty(CurrentPropertyName)) { return; } IDialogParameters x = new Prism.Services.Dialogs.DialogParameters(); x.Add(GlobalObject.dialogPar.para1.ToString(), SelectObject.tagNumber); x.Add(GlobalObject.dialogPar.para2.ToString(), CurrentPropertyName); var _dialogService = GlobalObject._prismContainer.Resolve(); _dialogService.ShowDialog(nameof(DialogPropertyHistory), x, (RES) => { }); } #endregion #region 属性锁 /// /// 属性锁 /// private async void onLock(object obj) { if (SelectObject == null) { return; } if (SelectObject.CreateUserID.ToLower() != GlobalObject.userInfo.userId.ToLower()) { MessageBox.Show("抱歉,非元件创建者您没有该元件锁定与解锁权限!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); return; } if (isLocked) { //进行解锁 var msg = await _enginedataService.LockTag(SelectObject.EngineDataID, "0"); if (string.IsNullOrEmpty(msg)) { changeLocked(false); General.SendMessage($"元件:{SelectObject.objectTypeName},已解锁!"); } else { MessageBox.Show(msg); } } else { //进行锁定属性 var msg = await _enginedataService.LockTag(SelectObject.EngineDataID, "1"); if (string.IsNullOrEmpty(msg)) { changeLocked(true, GlobalObject.userInfo.userId); General.SendMessage($"元件:{SelectObject.objectTypeName},已被【{GlobalObject.userInfo.userId}】锁定!"); } else { MessageBox.Show(msg); } } } /// /// 改变属性锁状态 /// /// 是否锁定 /// 锁定属性的用户id private void changeLocked(bool flag, string userId = "") { if (flag) { isLocked = true; lockTooltip = $"属性被({userId})锁定"; lockImage = lockImg; } else { isLocked = false; lockTooltip = "属性未锁定"; lockImage = unlockImg; } } #endregion #region 历史属性 /// /// 历史属性 /// private void onQiehuan(object obj) { if (listShowProperty.Any()) { isBasicGroup = !isBasicGroup; } } #endregion } }