{"record":{"id":"1a0a3e57ad914536","repo":"dotnet/wpf","slug":"invalidoperationexception-sr-format-sr-xamlxmlwriter","errorCode":null,"errorMessage":"InvalidOperationException(SR.Format(SR.XamlXmlWriterWriteNotSupportedInCurrentState, \"WriteStartMember\")) [implicit member, non-empty frame]","messagePattern":"InvalidOperationException\\(SR\\.Format\\(SR\\.XamlXmlWriterWriteNotSupportedInCurrentState, \"WriteStartMember\"\\)\\) \\[implicit member, non-empty frame\\]","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/XamlXmlWriter.cs","lineNumber":1041,"sourceCode":"                        Type = writer.namespaceScopes.Peek().Type,\n                    });\n                }\n\n                writer.namespaceScopes.Peek().Member = property;\n\n                XamlType parentType = writer.namespaceScopes.Peek().Type;\n                if ((property == XamlLanguage.Items && parentType is not null && parentType.IsWhitespaceSignificantCollection) ||\n                    (property == XamlLanguage.UnknownContent))\n                {\n                    writer.isFirstElementOfWhitespaceSignificantCollection = true;\n                }\n\n                XamlType containingType = writer.namespaceScopes.Peek().Type;\n                if (IsImplicit(property))\n                {\n                    if (!writer.namespaceScopes.Peek().IsEmpty())\n                    {\n                        throw new InvalidOperationException(SR.Format(SR.XamlXmlWriterWriteNotSupportedInCurrentState, \"WriteStartMember\"));\n                    }\n                }\n                else if (property == containingType.ContentProperty)\n                {\n                    if (!writer.namespaceScopes.Peek().IsEmpty())\n                    {\n                        throw new InvalidOperationException(SR.Format(SR.XamlXmlWriterWriteNotSupportedInCurrentState, \"WriteStartMember\"));\n                    }\n                    else\n                    {\n                        writer.currentState = TryContentProperty.State;\n                        return;\n                    }\n                }\n                else\n                {\n                    WriteMemberAsElement(writer);\n                    writer.WriteDeferredNamespaces(XamlNodeType.StartMember);","sourceCodeStart":1023,"sourceCodeEnd":1059,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/XamlXmlWriter.cs#L1023-L1059","documentation":"When WriteStartMember is called with an implicit property (e.g. an implicit collection/item member), XamlXmlWriter plans to merge it into the enclosing element's content. That only works when the current namespace-scope frame is empty (no open member framing); if a non-empty frame is active it throws InvalidOperationException 'WriteStartMember not supported in current state' because the implicit-member abbreviation cannot be nested inside another open member.","triggerScenarios":"Calling WriteStartMember for an implicit property while an earlier member is still open in the current frame (namespaceScopes.Peek() not empty).","commonSituations":"Emitting nested implicit collections without closing prior members; hand-written node streams that skip WriteEndMember before starting an implicit member; markup expansion code writing members inside already-open members.","solutions":["Close the currently open member with WriteEndMember before starting the implicit member","Emit the property explicitly (real member) instead of relying on implicit-member merging when nesting is required","Re-derive the node stream from a XamlObjectReader so implicit members appear at valid positions"],"exampleFix":"// before\nwriter.WriteStartMember(items); // previous member still open\n// after\nwriter.WriteEndMember();\nwriter.WriteStartMember(items); // implicit member now valid","handlingStrategy":"try-catch","validationCode":"if (IsImplicit(property) && !currentFrameIsEmpty) throw new InvalidOperationException(\"Implicit member requires empty frame\");","typeGuard":"bool CanStartImplicitMember(bool implicitProp, bool frameEmpty) => !implicitProp || frameEmpty;","tryCatchPattern":"try { writer.WriteStartMember(property); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"WriteStartMember\")) { writer.WriteEndMember(); writer.WriteStartMember(property); }","preventionTips":["Close open members before starting implicit members","Prefer explicit members when nesting is required","Generate streams via XamlObjectReader"],"tags":["xaml","implicit-member","invalid-state"],"backgroundTag":"invalid-state-transition","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-22T01:17:13.364Z"}