public override void WriteEndObject(XamlMarkupExtensionWriter writer) { if (writer.nodes.Count == 0) { throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid")); } if (writer.nodes.Pop().NodeType != XamlNodeType.StartObject) { throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid")); } writer.sb.Append("}"); if (writer.nodes.Count == 0) { writer.currentState = XamlMarkupExtensionWriter.Start.State; } else { XamlMarkupExtensionWriter.Node node2 = writer.nodes.Peek(); if (node2.NodeType != XamlNodeType.StartMember) { throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid")); } if (node2.XamlProperty == XamlLanguage.PositionalParameters) { writer.currentState = XamlMarkupExtensionWriter.InPositionalParametersAfterValue.State; } else { writer.currentState = XamlMarkupExtensionWriter.InMemberAfterValueOrEndObject.State; } } }
public override void WriteEndMember(XamlMarkupExtensionWriter writer) { XamlMarkupExtensionWriter.Node node = writer.nodes.Pop(); if ((node.NodeType != XamlNodeType.StartMember) || (node.XamlProperty != XamlLanguage.PositionalParameters)) { throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid")); } writer.currentState = XamlMarkupExtensionWriter.InObjectAfterMember.State; }
public override void WriteStartObject(XamlMarkupExtensionWriter writer, XamlType type) { writer.Reset(); string prefix = writer.LookupPrefix(type); writer.sb.Append("{"); base.WritePrefix(writer, prefix); writer.sb.Append(XamlXmlWriter.GetTypeName(type)); XamlMarkupExtensionWriter.Node item = new XamlMarkupExtensionWriter.Node { NodeType = XamlNodeType.StartObject, XamlType = type }; writer.nodes.Push(item); writer.currentState = XamlMarkupExtensionWriter.InObjectBeforeMember.State; }
protected void UpdateStack(XamlMarkupExtensionWriter writer, XamlMember property) { if (writer.nodes.Count == 0) { throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid")); } XamlMarkupExtensionWriter.Node objectNode = writer.nodes.Peek(); if (objectNode.NodeType != XamlNodeType.StartObject) { throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid")); } writer.CheckMemberForUniqueness(objectNode, property); XamlMarkupExtensionWriter.Node item = new XamlMarkupExtensionWriter.Node { NodeType = XamlNodeType.StartMember, XamlType = objectNode.XamlType, XamlProperty = property }; writer.nodes.Push(item); }
public override void WriteStartObject(XamlMarkupExtensionWriter writer, XamlType type) { writer.Reset(); string prefix = writer.LookupPrefix(type); writer.sb.Append("{"); base.WritePrefix(writer, prefix); writer.sb.Append(XamlXmlWriter.GetTypeName(type)); XamlMarkupExtensionWriter.Node item = new XamlMarkupExtensionWriter.Node { NodeType = XamlNodeType.StartObject, XamlType = type }; writer.nodes.Push(item); writer.currentState = XamlMarkupExtensionWriter.InObjectBeforeMember.State; }
protected void UpdateStack(XamlMarkupExtensionWriter writer, XamlMember property) { if (writer.nodes.Count == 0) { throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid")); } XamlMarkupExtensionWriter.Node objectNode = writer.nodes.Peek(); if (objectNode.NodeType != XamlNodeType.StartObject) { throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid")); } writer.CheckMemberForUniqueness(objectNode, property); XamlMarkupExtensionWriter.Node item = new XamlMarkupExtensionWriter.Node { NodeType = XamlNodeType.StartMember, XamlType = objectNode.XamlType, XamlProperty = property }; writer.nodes.Push(item); }