private void Rebuild(object sender, EventArgs args) { if (this.targetPropertyEntry != null) { this.targetPropertyEntry.OnRemoveFromCategory(); this.targetPropertyEntry = (SceneNodeProperty)null; } if (this.contextHelper.EditingProperty != null && this.contextHelper.CurrentProperty != null) { SceneNodeObjectSetBase nodeObjectSetBase = (SceneNodeObjectSetBase)this.contextHelper.EditingProperty.ObjectSet; ReferenceStep referenceStep = (ReferenceStep)nodeObjectSetBase.ProjectContext.ResolveProperty(ChangePropertyActionNode.ValueProperty); PropertyPickerExtendedEditor.WrapperObjectSet wrapperObjectSet = new PropertyPickerExtendedEditor.WrapperObjectSet((SceneNodeObjectSet)nodeObjectSetBase, referenceStep, this.contextHelper.CurrentProperty); this.targetPropertyEntry = (SceneNodeProperty) new PropertyPickerExtendedEditor.WrapperTypedSceneNodeProperty((SceneNodeObjectSet)wrapperObjectSet, new PropertyReference(referenceStep), this.contextHelper.CurrentProperty.Name, this.contextHelper.CurrentProperty.Attributes, this.contextHelper.CurrentProperty.PropertyType.RuntimeType, (ITypeResolver)nodeObjectSetBase.ProjectContext); this.targetPropertyEntry.Recache(); wrapperObjectSet.TargetProperty = this.targetPropertyEntry; this.propertyContainer.PropertyEntry = (PropertyEntry)this.targetPropertyEntry; if (this.propertyContainer.ExtendedEditorTemplate == null) { return; } this.propertyContainer.ActiveEditMode = PropertyContainerEditMode.ExtendedPinned; } else { this.propertyContainer.PropertyEntry = (PropertyEntry)null; } }
private void UpdateFromDataContext() { this.UnhookEditingProperty(); Microsoft.Windows.Design.PropertyEditing.PropertyValue propertyValue = this.hostControl.DataContext as Microsoft.Windows.Design.PropertyEditing.PropertyValue; if (propertyValue != null) { this.editingProperty = (PropertyReferenceProperty)propertyValue.ParentProperty; } if (this.editingProperty == null) { return; } this.editingProperty.PropertyReferenceChanged += new Microsoft.Expression.DesignSurface.Documents.PropertyReferenceChangedEventHandler(this.OnEditingPropertyChanged); SceneNodeObjectSetBase nodeObjectSetBase = (SceneNodeObjectSetBase)this.editingProperty.ObjectSet; ReferenceStep singleStep1 = (ReferenceStep)nodeObjectSetBase.ProjectContext.ResolveProperty(BehaviorTargetedTriggerActionNode.BehaviorTargetNameProperty); if (singleStep1 != null) { this.targetNameProperty = (SceneNodeProperty)nodeObjectSetBase.CreateProperty(new PropertyReference(singleStep1), (AttributeCollection)null); this.targetNameProperty.PropertyReferenceChanged += new Microsoft.Expression.DesignSurface.Documents.PropertyReferenceChangedEventHandler(this.OnEditingPropertyChanged); } ReferenceStep singleStep2 = (ReferenceStep)nodeObjectSetBase.ProjectContext.ResolveProperty(BehaviorTargetedTriggerActionNode.BehaviorTargetObjectProperty); if (singleStep2 != null) { this.targetObjectProperty = (SceneNodeProperty)nodeObjectSetBase.CreateProperty(new PropertyReference(singleStep2), (AttributeCollection)null); this.targetObjectProperty.PropertyReferenceChanged += new Microsoft.Expression.DesignSurface.Documents.PropertyReferenceChangedEventHandler(this.OnEditingPropertyChanged); } this.Rebuild(); }
public override object GetValue(PropertyReference propertyReference, PropertyReference.GetValueFlags getValueFlags) { object second = null; bool flag = false; foreach (SceneNode sceneNode in this.Objects) { PropertyReference propertyReference1 = SceneNodeObjectSet.FilterProperty(sceneNode, propertyReference); if (propertyReference1 != null) { object first; if ((getValueFlags & PropertyReference.GetValueFlags.Computed) != PropertyReference.GetValueFlags.Local) { if (SceneNodeObjectSetBase.IsValidForGetComputedValue(sceneNode)) { first = sceneNode.GetComputedValue(propertyReference1); } else { SceneNode ancestor = (SceneNode)null; PropertyReference propertyReference2 = propertyReference1; first = !this.ShouldWalkParentsForGetValue || !this.FindAncestor(sceneNode, out ancestor, ref propertyReference2, new Predicate <SceneNode>(SceneNodeObjectSetBase.IsValidForGetComputedValue)) ? sceneNode.GetLocalOrDefaultValue(propertyReference1) : ancestor.GetComputedValue(propertyReference2); } } else { first = sceneNode.GetLocalOrDefaultValue(propertyReference1); } if (!flag) { second = first; flag = true; } else if (!PropertyUtilities.Compare(first, second, sceneNode.ViewModel.DefaultView)) { second = MixedProperty.Mixed; break; } } } if (!flag) { ReferenceStep referenceStep = propertyReference[propertyReference.Count - 1]; if (this.designerContext.ActiveView != null) { second = referenceStep.GetDefaultValue(referenceStep.TargetType); } } return(second); }