using PdmSwPlugin.Common.CustomHandler; using PdmSwPlugin.PropertySetting.Interface; using PdmSwPlugin.PropertySetting.Panel.Attr; using SolidWorks.Interop.sldworks; using System.Collections.Generic; using System.ComponentModel; using System.Reflection; using System.Runtime.CompilerServices; using System.Windows.Controls; namespace PdmSwPlugin.PropertySetting.Panel { /// /// DrwPanel.xaml 的交互逻辑 /// public partial class DefaultPanel : UserControl, IPropertyOpt, INotifyPropertyChanged { #region 不能公用的东西,真有你的啊C# public event PropertyChangedEventHandler PropertyChanged; public void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } public void RaiseAndSetIfChanged(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); var attr = this.GetType().GetProperty(propertyName)?.GetCustomAttribute(); if (attr == null) { return; } if (attr.NeedSave) { UpdateProperty?.Invoke(this, attr.Name, @new); } } } #endregion private string _message; public string message { get => _message; set => RaiseAndSetIfChanged(ref _message, value); } public DefaultPanel() { DataContext = this; InitializeComponent(); } private ModelDoc2 doc; public event PanelPropertyChanged UpdateProperty; public bool ClearAllProperties(out string ErrMsg) { ErrMsg = null; return true; } public Dictionary GetAllProperties() { return null; } public object GetPropertyValue(string propertyName) { return null; } public bool SetProperties(ModelDoc2 doc, object properties, bool docChange, out string errMsg) { errMsg = null; message = properties.ToString(); return true; } public bool SaveDoc(ref int err, ref int warn){ return true; } public bool SetSettings(object settings) { return true; } public bool UpdateSingleProperty(string name, string value) { return true; } public bool GetDocChanged() { return false; } public bool ResetProperty(out string errMsg) { return SetProperties(doc, message, false, out errMsg); } } }