示例#1
0
        private void EnqueueAttribute(XamlAttribute attribute)
        {
            var nodeForAttribute = new ProtoParserNode();
            switch (attribute.Type)
            {
                case AttributeType.CtorDirective:
                case AttributeType.Name:
                case AttributeType.Directive:
                    nodeForAttribute.NodeType = NodeType.Directive;
                    break;
                case AttributeType.Property:
                    nodeForAttribute.NodeType = NodeType.Attribute;
                    break;
                case AttributeType.AttachableProperty:
                    nodeForAttribute.NodeType = NodeType.Attribute;
                    break;
                default:
                    throw new ProtoParserException("The type of the attribute is unknown");
            }

            var property = attribute.Property;
            var convertCrlFtoLf = property == null;

            nodeForAttribute.PropertyAttribute = property;
            var xamlText = new TextBuffer();
            xamlText.Append(attribute.Value, false, convertCrlFtoLf);
            nodeForAttribute.PropertyAttributeText = xamlText;
            nodeForAttribute.Prefix = attribute.Locator.Prefix;

            nodes.Enqueue(nodeForAttribute);
        }