{"record":{"id":"cb5b52551df6ae56","repo":"dotnet/wpf","slug":"sr-reachserialization-wrongpropertytypeforfixeddocument-cb5b52","errorCode":null,"errorMessage":"SR.ReachSerialization_WrongPropertyTypeForFixedDocument","messagePattern":"SR\\.ReachSerialization_WrongPropertyTypeForFixedDocument","errorType":"exception","errorClass":"XpsSerializationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/XpsOMFixedDocumentSerializer.cs","lineNumber":93,"sourceCode":"            _xpsOMSerializationManager.ResourcePolicy.ColorContextTable = new Dictionary<int, Uri>();\n        }\n\n        internal\n        override\n        void\n        PersistObjectData(\n            SerializableObjectContext serializableObjectContext\n            )\n        {\n            BeginPersistObjectData(serializableObjectContext);\n\n            if (serializableObjectContext.IsComplexValue)\n            {\n                SerializeObjectCore(serializableObjectContext);\n            }\n            else\n            {\n                throw new XpsSerializationException(SR.ReachSerialization_WrongPropertyTypeForFixedDocument);\n            }\n\n            EndPersistObjectData();\n        }\n\n        internal\n        void\n        BeginPersistObjectData(\n            SerializableObjectContext serializableObjectContext\n        )\n        {\n            ArgumentNullException.ThrowIfNull(serializableObjectContext);\n\n            _xpsOMSerializationManager.RegisterDocumentStart();\n\n            if (serializableObjectContext.IsComplexValue)\n            {\n                XpsSerializationPrintTicketRequiredEventArgs e =","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/XpsOMFixedDocumentSerializer.cs#L75-L111","documentation":"XpsOMFixedDocumentSerializer.PersistObjectData throws XpsSerializationException (SR.ReachSerialization_WrongPropertyTypeForFixedDocument) when the SerializableObjectContext holds a simple (non-complex) value. FixedDocument nodes must be serialized as complex values (containing child objects like FixedPage references); a primitive/leaf property at a FixedDocument position is invalid in the XPS schema.","triggerScenarios":"Serializing an object graph where a FixedDocument-level context reports IsComplexValue == false — i.e., the tree walker reached a simple property where a FixedDocument container was expected.","commonSituations":"Custom XPS document structures that violate the FixedDocument schema; wrongly typed roots fed to the OXPS serializer; reflection-based tree walkers misreporting property types.","solutions":["Ensure the object serialized as a FixedDocument exposes complex child properties (FixedPage collection), not simple values","Fix the data model so the FixedDocument position holds a proper container type","Use the standard FixedDocument/FixedDocumentSequence classes instead of custom stand-ins"],"exampleFix":"// before\ndoc.SetCurrentValue(MyFixedDocumentProperty, \"simple value\");\n// after\ndoc.SetCurrentValue(MyFixedDocumentProperty, new FixedDocument());","handlingStrategy":"validation","validationCode":"bool IsComplexFixedDocument(object doc) =>\n    doc is FixedDocument || (doc != null && HasComplexChildren(doc));","typeGuard":"bool IsFixedDocumentContainer(object o) => o is System.Windows.Documents.FixedDocument;","tryCatchPattern":"try { serializer.Serialize(doc); }\ncatch (XpsSerializationException ex) when (ex.Message.Contains(\"FixedDocument\")) { /* schema violation: simple value at FixedDocument position */ }","preventionTips":["Model FixedDocuments with child PageContent/FixedPage collections only","Use standard WPF FixedDocument types in serialization graphs","Validate document structure with the XPS schema before serializing"],"tags":["wpf","xps","oxps","serialization"],"backgroundTag":"schema-validation-failed","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}