private void UpdateTargetType() { if (TargetType == null) { this.Clear(); } else { PropertyList.Clear(); foreach (var prop in DesignerManager.GetProperties(TargetType)) { var item = new PropertyItem(prop); dictItems[item.Property] = item; PropertyList.Add(item); } if (this.Model.Property != null && dictItems.ContainsKey(this.Model.Property)) { propertyBox.SelectedItem = dictItems[this.Model.Property]; } else { propertyBox.SelectedIndex = 0; } } OnTargetTypeChanged(); }
private void SelectedObjects_Changed(object sender, EventArgs e) { foreach (PropertyGridItemModel item in this) { if (item.Setter is IDisposable disposable) { disposable.Dispose(); } } this.Clear(); if (SelectedObjects?.Length > 0 && !SelectedObjects[0].Equals(presentedObject)) { SetPresentedObject((DependencyObject)SelectedObjects[0]); foreach (var prop in DesignerManager.GetProperties(presentedObject.GetType())) { ISetter setter; if (string.IsNullOrEmpty(prop.Attribute.Key)) { setter = SetterManager.CreateSetter(presentedObject, prop.Element); } else { setter = SetterManager.CreateSetter(presentedObject, prop.Element, prop.Attribute.Key); } if (setter == null) { continue; } this.AddItem( new PropertyGridItemModel(prop, setter)); } } else { SetPresentedObject(null); } }
private IEnumerable <(int HashCode, AttributeTuple <DesignElementAttribute, PropertyInfo> Value)> GetHashedProperties(DependencyObject obj) { return(DesignerManager.GetProperties(obj.GetType()) .Select(p => (CreatePropertyHash(p), p))); }