Esempio n. 1
0
        public DocumentPrimitiveNode CreateBasicNode(SampleBasicType sampleType, string value)
        {
            string str = value;

            if (sampleType == SampleBasicType.Image)
            {
                str = this.DataSet.AddOrUpdateAssetFile(value);
            }
            DocumentNodeStringValue documentNodeStringValue = new DocumentNodeStringValue(str);

            return(this.XamlDocumentContext.CreateNode(sampleType.TypeId, (IDocumentNodeValue)documentNodeStringValue));
        }
        public override bool Equals(object obj)
        {
            if (this == obj)
            {
                return(true);
            }
            DocumentNodeStringValue documentNodeStringValue = obj as DocumentNodeStringValue;

            if (documentNodeStringValue != null)
            {
                return(documentNodeStringValue.value == this.value);
            }
            return(false);
        }
Esempio n. 3
0
        public virtual string GetValueAsString(DocumentNode node)
        {
            ITypeId type       = node.Type;
            Type    targetType = node.TargetType;
            DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode;
            DocumentCompositeNode documentCompositeNode = node as DocumentCompositeNode;

            if (documentPrimitiveNode != null)
            {
                DocumentNodeStringValue value          = documentPrimitiveNode.Value as DocumentNodeStringValue;
                TypeConverter           valueConverter = documentPrimitiveNode.ValueConverter;
                if (value != null && valueConverter != null && valueConverter.CanConvertFrom(typeof(string)))
                {
                    if (typeof(Vector3DCollection) == targetType)
                    {
                        Vector3DCollection vector3DCollections = (Vector3DCollection)valueConverter.ConvertFromInvariantString(value.Value);
                        return(PointSerializationHelper.GetVector3DCollectionAsString(vector3DCollections));
                    }
                    if (typeof(Point3DCollection) == targetType)
                    {
                        Point3DCollection point3DCollections = (Point3DCollection)valueConverter.ConvertFromInvariantString(value.Value);
                        return(PointSerializationHelper.GetPoint3DCollectionAsString(point3DCollections));
                    }
                    if (typeof(PointCollection) == targetType)
                    {
                        PointCollection pointCollections = (PointCollection)valueConverter.ConvertFromInvariantString(value.Value);
                        return(PointSerializationHelper.GetPointCollectionAsString(pointCollections));
                    }
                }
            }
            else if (documentCompositeNode != null)
            {
                if (PlatformTypes.PathGeometry.IsAssignableFrom(type))
                {
                    return(PathGeometrySerializationHelper.SerializeAsAttribute(documentCompositeNode));
                }
                if (PlatformTypes.PathFigureCollection.IsAssignableFrom(type))
                {
                    return(PathGeometrySerializationHelper.SerializeAsAttribute(documentCompositeNode));
                }
                if (PlatformTypes.DoubleCollection.IsAssignableFrom(type))
                {
                    return(PointSerializationHelper.SerializeDoubleCollectionAsAttribute(documentCompositeNode));
                }
            }
            return(null);
        }
Esempio n. 4
0
        public override bool Instantiate(IInstanceBuilderContext context, ViewNode viewNode)
        {
            IPropertyId           sitePropertyKey;
            DocumentPrimitiveNode documentNode = viewNode.DocumentNode as DocumentPrimitiveNode;

            if (documentNode != null)
            {
                DocumentNodeStringValue value = documentNode.Value as DocumentNodeStringValue;
                if (value != null)
                {
                    if (viewNode.Parent == null || !viewNode.IsProperty)
                    {
                        sitePropertyKey = null;
                    }
                    else
                    {
                        sitePropertyKey = viewNode.SitePropertyKey;
                    }
                    IPropertyId propertyProperty = sitePropertyKey;
                    if (viewNode.Parent != null)
                    {
                        IPropertyValueTypeMetadata metadata = viewNode.Parent.DocumentNode.Type.Metadata as IPropertyValueTypeMetadata;
                        IPropertyValueTypeMetadata propertyValueTypeMetadatum = metadata;
                        if (metadata != null)
                        {
                            propertyProperty = propertyValueTypeMetadatum.PropertyProperty;
                        }
                    }
                    if (this.ShouldUseDesignTimeUri(propertyProperty))
                    {
                        Uri uri  = new Uri(value.Value, UriKind.RelativeOrAbsolute);
                        Uri uri1 = viewNode.DocumentNode.Context.MakeDesignTimeUri(uri);
                        if (!context.IsSerializationScope)
                        {
                            viewNode.Instance = uri1;
                        }
                        else
                        {
                            viewNode.Instance = DocumentNodeUtilities.NewUriDocumentNode(context.DocumentContext, uri1);
                        }
                        viewNode.InstanceState = InstanceState.Valid;
                    }
                }
            }
            return(base.Instantiate(context, viewNode));
        }
 private bool AppliesToImpl(DocumentNode node)
 {
     if (PlatformTypes.FontFamily.IsAssignableFrom((ITypeId)node.Type))
     {
         DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode;
         if (documentPrimitiveNode != null)
         {
             DocumentNodeStringValue documentNodeStringValue = documentPrimitiveNode.Value as DocumentNodeStringValue;
             if (documentNodeStringValue != null)
             {
                 FontFamily oldFontFamily;
                 FontFamily newFontFamily;
                 FontEmbedder.CreateFontFamilyChange(this.FontFamilyChangeModel.FontChangeType, this.FontFamilyChangeModel.ProjectFont, node.Context, out oldFontFamily, out newFontFamily);
                 return(FontEmbedder.AreFontsEqual(new FontFamily(FontFamilyHelper.EnsureFamilyName(documentNodeStringValue.Value)), oldFontFamily, node.Context));
             }
         }
     }
     return(false);
 }
Esempio n. 6
0
        private Uri GetUriPropertyValue(DocumentNode node, IPropertyId propertyKey)
        {
            DocumentCompositeNode documentCompositeNode = node as DocumentCompositeNode;

            if (documentCompositeNode != null)
            {
                DocumentPrimitiveNode documentPrimitiveNode = documentCompositeNode.Properties[propertyKey] as DocumentPrimitiveNode;
                if (documentPrimitiveNode != null)
                {
                    DocumentNodeStringValue documentNodeStringValue = documentPrimitiveNode.Value as DocumentNodeStringValue;
                    if (documentNodeStringValue != null)
                    {
                        Uri result = (Uri)null;
                        if (Uri.TryCreate(documentNodeStringValue.Value, UriKind.RelativeOrAbsolute, out result))
                        {
                            return(node.Context.MakeDesignTimeUri(result));
                        }
                    }
                }
            }
            return((Uri)null);
        }
Esempio n. 7
0
        public List <ViewNode> Validate(IInstanceBuilderContext context, out List <ExpressionSite> sites)
        {
            ExpressionSite      expressionSite;
            bool                flag;
            DocumentNode        item;
            DocumentNode        documentNode;
            DocumentNode        item1;
            List <DocumentNode> documentNodes = new List <DocumentNode>();
            List <ViewNode>     viewNodes     = new List <ViewNode>();
            List <ViewNode>     viewNodes1    = new List <ViewNode>();

            sites = new List <ExpressionSite>();
            ExpressionEvaluator expressionEvaluator = new ExpressionEvaluator(context.DocumentRootResolver);

            foreach (KeyValuePair <DocumentNode, List <ViewNode> > keyValuePair in this)
            {
                DocumentNode key = keyValuePair.Key;
                viewNodes1.Clear();
                foreach (ViewNode value in keyValuePair.Value)
                {
                    ViewNode parent = value.Parent;
                    if (parent != null)
                    {
                        DocumentNode documentNode1 = parent.DocumentNode;
                        if (!value.IsProperty)
                        {
                            int num = value.Parent.Children.IndexOf(value);
                            expressionSite = new ExpressionSite(num);
                        }
                        else
                        {
                            expressionSite = new ExpressionSite(value.SitePropertyKey);
                        }
                        bool flag1 = ExpressionCache.HasInvalidAncestor(context, parent, out flag);
                        if (!flag)
                        {
                            continue;
                        }
                        if (!flag1)
                        {
                            DocumentNodePath      correspondingNodePath = context.ViewNodeManager.GetCorrespondingNodePath(parent);
                            DocumentCompositeNode node = (DocumentCompositeNode)correspondingNodePath.Node;
                            if (expressionSite.IsProperty)
                            {
                                item = node.Properties[expressionSite.PropertyKey];
                            }
                            else if (node.Children == null)
                            {
                                if (expressionSite.ChildIndex < node.ConstructorArguments.Count)
                                {
                                    documentNode = node.ConstructorArguments[expressionSite.ChildIndex];
                                }
                                else
                                {
                                    documentNode = null;
                                }
                                item = documentNode;
                            }
                            else
                            {
                                if (expressionSite.ChildIndex < node.Children.Count)
                                {
                                    item1 = node.Children[expressionSite.ChildIndex];
                                }
                                else
                                {
                                    item1 = null;
                                }
                                item = item1;
                            }
                            DocumentNode documentNode2 = value.DocumentNode;
                            bool         flag2         = true;
                            if (item != null)
                            {
                                if (!DocumentNodeUtilities.IsBinding(value.DocumentNode))
                                {
                                    flag2         = false;
                                    documentNode2 = expressionEvaluator.EvaluateExpression(correspondingNodePath, item);
                                }
                                else
                                {
                                    IPropertyId propertyId = value.DocumentNode.TypeResolver.ResolveProperty(Microsoft.Expression.DesignModel.Metadata.KnownProperties.BindingElementNameProperty);
                                    if (propertyId != null)
                                    {
                                        DocumentNode item2 = ((DocumentCompositeNode)value.DocumentNode).Properties[propertyId];
                                        if (item2 != null)
                                        {
                                            DocumentPrimitiveNode documentPrimitiveNode = item2 as DocumentPrimitiveNode;
                                            if (documentPrimitiveNode != null)
                                            {
                                                DocumentNodeStringValue documentNodeStringValue = documentPrimitiveNode.Value as DocumentNodeStringValue;
                                                if (documentNodeStringValue != null)
                                                {
                                                    string str = documentNodeStringValue.Value;
                                                    object obj = context.NameScope.FindName(str);
                                                    if (obj != null)
                                                    {
                                                        ViewNode      viewNode = context.InstanceDictionary.GetViewNode(obj, false);
                                                        InstanceState invalid  = InstanceState.Invalid;
                                                        if (viewNode != null && !ExpressionCache.HasInvalidAncestor(context, viewNode, out flag))
                                                        {
                                                            invalid = viewNode.InstanceState;
                                                        }
                                                        if (invalid != InstanceState.Invalid && (invalid.InvalidProperties == null || !invalid.InvalidProperties.Contains(viewNode.DocumentNode.NameProperty)))
                                                        {
                                                            documentNode2 = viewNode.DocumentNode;
                                                            flag2         = false;
                                                        }
                                                        else if (parent.Instance is VisualBrush && expressionSite.IsProperty && Microsoft.Expression.DesignModel.Metadata.KnownProperties.VisualBrushVisualProperty.Equals(expressionSite.PropertyKey))
                                                        {
                                                            BindingOperations.ClearBinding((VisualBrush)parent.Instance, VisualBrush.VisualProperty);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            if (key != item == (documentNode2 != null) && (documentNode2 == null || documentNode2 == key) && !flag2)
                            {
                                continue;
                            }
                            viewNodes1.Add(value);
                            viewNodes.Add(parent);
                            sites.Add(expressionSite);
                        }
                        else
                        {
                            viewNodes1.Add(value);
                        }
                    }
                    else
                    {
                        viewNodes1.Add(value);
                    }
                }
                if (viewNodes1.Count != keyValuePair.Value.Count)
                {
                    this.PurgePartialEntry(keyValuePair.Value, viewNodes1);
                }
                else
                {
                    documentNodes.Add(keyValuePair.Key);
                }
            }
            foreach (DocumentNode documentNode3 in documentNodes)
            {
                base.Remove(documentNode3);
            }
            return(viewNodes);
        }