Example #1
0
        private XamlMemberDefinition VisitMember(XamlXmlReader reader, XamlObjectDefinition owner)
        {
            var member = new XamlMemberDefinition(reader.Member, reader.LineNumber, reader.LinePosition, owner);

            while (reader.Read())
            {
                WriteState(reader);

                switch (reader.NodeType)
                {
                case XamlNodeType.EndMember:
                    _depth--;
                    return(member);

                case XamlNodeType.Value:
                    if (IsLiteralInlineText(reader.Value, member, owner))
                    {
                        var run = ConvertLiteralInlineTextToRun(reader);
                        member.Objects.Add(run);
                    }
                    else
                    {
                        if (member.Value is string s)
                        {
                            member.Value += ", " + reader.Value;
                        }
                        else
                        {
                            member.Value = reader.Value;
                        }
                    }
                    break;

                case XamlNodeType.StartObject:
                    _depth++;
                    member.Objects.Add(VisitObject(reader, owner));
                    break;

                case XamlNodeType.EndObject:
                    _depth--;
                    break;

                case XamlNodeType.NamespaceDeclaration:
                    // Skip
                    break;

                default:
                    throw new InvalidOperationException("Unable to process {2} node at Line {0}, position {1}".InvariantCultureFormat(reader.LineNumber, reader.LinePosition, reader.NodeType));
                }
            }

            return(member);
        }
Example #2
0
 private bool IsLiteralInlineText(object value, XamlMemberDefinition member, XamlObjectDefinition xamlObject)
 {
     return(value is string &&
            xamlObject.Type.Name == "TextBlock" &&
            (member.Member.Name == "_UnknownContent" || member.Member.Name == "Inlines"));
 }
Example #3
0
 public Subclass(XamlMemberDefinition contentOwner, string returnType)
 {
     ContentOwner = contentOwner;
     ReturnType   = returnType;
 }
Example #4
0
 public Subclass(XamlMemberDefinition contentOwner, string returnType, string defaultBindMode)
 {
     ContentOwner    = contentOwner;
     ReturnType      = returnType;
     DefaultBindMode = defaultBindMode;
 }