{"record":{"id":"c9fdccadf5ece8d4","repo":"dotnet/wpf","slug":"sr-texteditorcopypaste-entrypartismissinginxamlpackage","errorCode":null,"errorMessage":"SR.TextEditorCopyPaste_EntryPartIsMissingInXamlPackage","messagePattern":"SR\\.TextEditorCopyPaste_EntryPartIsMissingInXamlPackage","errorType":"exception","errorClass":"XamlParseException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Documents/WpfPayload.cs","lineNumber":367,"sourceCode":"            catch (System.OutOfMemoryException)\n            {\n                xamlObject = null;\n            }\n\n            return xamlObject;\n        }\n\n        // Checks whether the WPF payload meets minimal structural requirements:\n        // 1) Entry part exists\n        // 2) All components have proper relationships established between source and target\n        // Returns an entry part of the payload if it is valid; throws otherwise.\n        private PackagePart ValidatePayload()\n        {\n            // Get the WPF entry part\n            PackagePart xamlEntryPart = this.GetWpfEntryPart();\n            if (xamlEntryPart == null)\n            {\n                throw new XamlParseException(SR.TextEditorCopyPaste_EntryPartIsMissingInXamlPackage);\n            }\n\n            //  Add more validation for package structure\n\n            return xamlEntryPart;\n        }\n\n        private static int _wpfPayloadCount; // used to disambiguate between all acts of loading from different WPF payloads.\n\n        // -------------------------------------------------------------\n        //\n        // Public Properties\n        //\n        // -------------------------------------------------------------\n\n        #region Public Properties\n\n        /// <summary>","sourceCodeStart":349,"sourceCodeEnd":385,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Documents/WpfPayload.cs#L349-L385","documentation":"WpfPayload.ValidatePayload throws XamlParseException when a WPF payload package (a WPF-flavored XAML package on the clipboard or in a data object) contains no recognizable WPF entry part. GetWpfEntryPart returned null, meaning the package structure is not a valid WPF payload, so it cannot be parsed.","triggerScenarios":"Reading clipboard data with DataFormats.XamlPackage / WpfPayload where the clipboard content was not written by WPF, the package part named as the WPF entry is absent, or the package was truncated/corrupted between copy and paste.","commonSituations":"Pasting from non-WPF apps that put malformed XAML packages on the clipboard; clipboard content overwritten between copy and paste; third-party clipboard managers converting data formats; corrupted streams saved/restored from disk.","solutions":["Check clipboard/DataObject.ContainsData(DataFormats.XamlPackage) and validate the payload before calling the parse path.","Catch XamlParseException and fall back to other clipboard formats (Text, Html, Rtf) or DataFormats.Xaml.","Re-copy the content from the source application so a fresh, intact WPF payload is produced.","If serializing payloads yourself, always write the WPF entry part (WpfPayload.CreateWpfPayload) before storing the package."],"exampleFix":"// before\nvar payload = WpfPayload.CreateFromDataObject(dataObject);\nvar part = payload.ValidatePayload(); // throws if missing\n// after\nif (!dataObject.GetDataPresent(DataFormats.XamlPackage))\n    return; // use Text/Html fallback\ntry\n{\n    var part = payload.ValidatePayload();\n}\ncatch (XamlParseException)\n{\n    // fall back to DataFormats.Text / Html\n}","handlingStrategy":"try-catch","validationCode":"if (!dataObject.GetDataPresent(DataFormats.XamlPackage))\n    return FallbackToTextOrHtml(dataObject);","typeGuard":null,"tryCatchPattern":"try { var part = payload.ValidatePayload(); }\ncatch (XamlParseException)\n call payload = FallbackToOtherFormats(dataObject); }","preventionTips":["Always probe GetDataPresent(DataFormats.XamlPackage) before reading","Implement a format fallback chain: XamlPackage -> Html -> Rtf -> Text","Don't round-trip WPF payloads through non-WPF clipboard managers","Test paste flows against content copied from non-WPF applications"],"tags":["wpf","clipboard","xaml","payload"],"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"}