private bool SetBinding(SceneNode targetNode, ref IProperty targetProperty) { ReferenceStep targetProperty1 = (ReferenceStep)null; if (targetProperty != null) { targetProperty1 = this.DragModel.DocumentContext.TypeResolver.ResolveProperty((IPropertyId)targetProperty) as ReferenceStep; } DataSchemaNodePath bindingPath = new DataSchemaNodePath(this.DragModel.DataSource.PrimaryAbsoluteSchema, this.DragModel.RelativeDropSchemaPath.Node); SceneNode setBindingOrData; if (targetProperty1 == null) { bool useDesignDataContext = DataBindingModeModel.Instance.NormalizedMode == DataBindingMode.Details; setBindingOrData = MiniBindingDialog.CreateAndSetBindingOrData(bindingPath, targetNode, useDesignDataContext, ref targetProperty1); } else { setBindingOrData = this.DragModel.ViewModel.BindingEditor.CreateAndSetBindingOrData(targetNode, (IPropertyId)targetProperty1, bindingPath); } if (setBindingOrData == null) { return(false); } if (targetProperty != null) { this.GenerateDetailsIfNeeded(targetNode, (IProperty)targetProperty1); } targetProperty = (IProperty)targetProperty1; return(true); }
public void SelectElement(SceneElement element, SceneNodeProperty editingProperty) { ISchema schemaForDataSource = SchemaManager.GetSchemaForDataSource((SceneNode)element); using (SceneEditTransaction editTransaction = element.ViewModel.CreateEditTransaction(StringTable.CreateElementPropertyBindingUndo)) { BindingSceneNode elementNameBinding = MiniBindingDialog.CreateElementNameBinding(new DataSchemaNodePath(schemaForDataSource, schemaForDataSource.Root), (SceneNode)element, editingProperty.PropertyTypeId); if (elementNameBinding != null) { editingProperty.SetValue((object)elementNameBinding.DocumentNode); editTransaction.Commit(); } else { editTransaction.Cancel(); } } }