public override SceneNode CreateAndSetBindingOrData(SceneNodeProperty property) { PerformanceUtility.MeasurePerformanceUntilRender(PerformanceEvent.DatabindCommand); SceneNode sceneNode = (SceneNode)((object[])this.Objects)[0]; SceneNode target; if (property.Reference.Count == 1 || this.IsTextRange) { target = sceneNode; } else { using (SceneEditTransaction editTransaction = sceneNode.ViewModel.CreateEditTransaction("Build local value tree", true)) { sceneNode.EnsureNodeTree(property.Reference, true, true); editTransaction.Commit(); } PropertyReference propertyReference = property.Reference.Subreference(0, property.Reference.Count - 2); target = sceneNode.GetLocalValueAsSceneNode(propertyReference); } ReferenceStep lastStep = property.Reference.LastStep; return(DataBindingDialog.CreateAndSetBindingOrData(this.designerContext, target, lastStep)); }