{"record":{"id":"4636d060a2f4a1f8","repo":"dotnet/maui","slug":"renderer","errorCode":null,"errorMessage":"renderer","messagePattern":"renderer","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Compatibility/Core/src/Windows/VisualElementPackager.cs","lineNumber":24,"sourceCode":"namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP\n{\n\t[Obsolete]\n\tpublic class VisualElementPackager : IDisposable\n\t{\n\t\treadonly int _column;\n\t\treadonly int _columnSpan;\n\n\t\treadonly Panel _panel;\n\t\treadonly IVisualElementRenderer _renderer;\n\t\treadonly int _row;\n\t\treadonly int _rowSpan;\n\t\tbool _disposed;\n\t\tbool _isLoaded;\n\n\t\tpublic VisualElementPackager(IVisualElementRenderer renderer)\n\t\t{\n\t\t\tif (renderer == null)\n\t\t\t\tthrow new ArgumentNullException(\"renderer\");\n\n\t\t\t_renderer = renderer;\n\n\t\t\t_panel = renderer.ContainerElement as Panel;\n\t\t\tif (_panel == null)\n\t\t\t\tthrow new ArgumentException(\"Renderer's container element must be a Panel\");\n\t\t}\n\n\t\tpublic VisualElementPackager(IVisualElementRenderer renderer, int row = 0, int rowSpan = 0, int column = 0, int columnSpan = 0) : this(renderer)\n\t\t{\n\t\t\t_row = row;\n\t\t\t_rowSpan = rowSpan;\n\t\t\t_column = column;\n\t\t\t_columnSpan = columnSpan;\n\t\t}\n\n\t\tIElementController ElementController => _renderer.Element as IElementController;\n","sourceCodeStart":6,"sourceCodeEnd":42,"githubUrl":"https://github.com/dotnet/maui/blob/f377ff1c5ee04d334d8a925f50c83a6b7afddf03/src/Compatibility/Core/src/Windows/VisualElementPackager.cs#L6-L42","documentation":"VisualElementPackager constructor throws ArgumentNullException when the renderer parameter is null. The packager manages child VisualElements within a renderer's container panel and requires the renderer to access its Element and ContainerElement.","triggerScenarios":"Constructing a VisualElementPackager with a null renderer reference — e.g. during custom renderer setup when the renderer hasn't been created yet, or when a factory method returned null.","commonSituations":"Custom renderer's OnElementChanged creates a packager before the renderer is fully initialized; packager construction order error in composite renderers.","solutions":["Ensure the renderer is fully constructed before creating the VisualElementPackager","Null-check the renderer before passing it to the constructor","Review the renderer initialization sequence in OnElementChanged"],"exampleFix":"// before\nvar packager = new VisualElementPackager(null); // throws\n\n// after\nif (renderer == null)\n    throw new InvalidOperationException(\"Renderer must be created first\");\nvar packager = new VisualElementPackager(renderer);","handlingStrategy":"validation","validationCode":"// Before constructing VisualElementPackager, null-check the renderer\nif (renderer == null)\n    throw new ArgumentNullException(nameof(renderer), \"Renderer must be created before packager\");\nvar packager = new VisualElementPackager(renderer);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Ensure the renderer is fully constructed before creating a VisualElementPackager","Initialize the packager in OnElementChanged after the renderer is bound","Null-check renderer references in custom renderer setup code"],"tags":["null-argument","validation","rendering","winui","layout"],"backgroundTag":null,"analyzedSha":"f377ff1c5ee04d334d8a925f50c83a6b7afddf03","analyzedAt":"2026-08-13T14:26:18.069Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}