コード例 #1
0
        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);
        }
コード例 #2
0
        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();
                }
            }
        }