{"record":{"id":"6d3c2f82719826f2","repo":"dotnet/wpf","slug":"sr-pagecachesizenotallowed-treeviewitem","errorCode":null,"errorMessage":"SR.PageCacheSizeNotAllowed","messagePattern":"SR\\.PageCacheSizeNotAllowed","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/TreeViewItem.cs","lineNumber":354,"sourceCode":"        #region Internal Methods\n\n        protected override Size ArrangeOverride(Size arrangeSize)\n        {\n            arrangeSize = base.ArrangeOverride(arrangeSize);\n\n            Helper.ComputeCorrectionFactor(ParentTreeView, this, ItemsHost, HeaderElement);\n\n            return arrangeSize;\n        }\n\n        HierarchicalVirtualizationConstraints IHierarchicalVirtualizationAndScrollInfo.Constraints\n        {\n            get { return GroupItem.HierarchicalVirtualizationConstraintsField.GetValue(this); }\n            set\n            {\n                if (value.CacheLengthUnit == VirtualizationCacheLengthUnit.Page)\n                {\n                    throw new InvalidOperationException(SR.PageCacheSizeNotAllowed);\n                }\n                GroupItem.HierarchicalVirtualizationConstraintsField.SetValue(this, value);\n            }\n        }\n\n        HierarchicalVirtualizationHeaderDesiredSizes IHierarchicalVirtualizationAndScrollInfo.HeaderDesiredSizes\n        {\n            get\n            {\n                FrameworkElement headerElement = HeaderElement;\n                Size pixelHeaderSize = this.IsVisible && headerElement != null ? headerElement.DesiredSize : new Size();\n\n                Helper.ApplyCorrectionFactorToPixelHeaderSize(ParentTreeView, this, ItemsHost, ref pixelHeaderSize);\n\n                Size logicalHeaderSize = new Size(DoubleUtil.GreaterThanZero(pixelHeaderSize.Width) ? 1 : 0,\n                                DoubleUtil.GreaterThanZero(pixelHeaderSize.Height) ? 1 : 0);\n\n                return new HierarchicalVirtualizationHeaderDesiredSizes(logicalHeaderSize, pixelHeaderSize);","sourceCodeStart":336,"sourceCodeEnd":372,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/TreeViewItem.cs#L336-L372","documentation":"The HierarchicalVirtualizationConstraints property on TreeViewItem rejects VirtualizationCacheLengthUnit.Page cache units, throwing InvalidOperationException. For hierarchical (TreeView) virtualization only Item or Pixel cache units are permitted; a Page-sized cache is not supported on this control type.","triggerScenarios":"Setting itemHierarchicalVirtualizationConstraints.CacheLengthUnit = VirtualizationCacheLengthUnit.Page on a TreeViewItem (directly or via binding), then triggering the setter.","commonSituations":"Copying virtualization settings from a flat ItemsControl (which supports Page) to a TreeView; configuring HierarchicalVirtualizationCacheLength in a style shared across control types.","solutions":["Change the cache unit to VirtualizationCacheLengthUnit.Item or .Pixel.","Use separate styles for TreeViewItem versus ListBox/ItemsControl virtualization settings.","If bindings set the value, add a converter that translates Page into Pixel/Item."],"exampleFix":"// before\ntreeViewItem.HierarchicalVirtualizationConstraints =\n    new HierarchicalVirtualizationConstraints(new VirtualizationCacheLength(1), VirtualizationCacheLengthUnit.Page, 0);\n// after\ntreeViewItem.HierarchicalVirtualizationConstraints =\n    new HierarchicalVirtualizationConstraints(new VirtualizationCacheLength(1), VirtualizationCacheLengthUnit.Pixel, 0);","handlingStrategy":"validation","validationCode":"if (constraints.CacheLengthUnit == VirtualizationCacheLengthUnit.Page)\n    constraints = new HierarchicalVirtualizationConstraints(constraints.CacheLength, VirtualizationCacheLengthUnit.Pixel, 0);\ntreeViewItem.HierarchicalVirtualizationConstraints = constraints;","typeGuard":null,"tryCatchPattern":"try { item.HierarchicalVirtualizationConstraints = c; }\ncatch (InvalidOperationException) { /* Page cache not allowed on TreeViewItem; use Pixel/Item */ }","preventionTips":["Never use VirtualizationCacheLengthUnit.Page on TreeViewItem constraints.","Keep TreeView virtualization styles separate from flat-list styles.","Prefer Pixel or Item cache units for hierarchical virtualization."],"tags":["wpf","invalid-operation","virtualization","treeview"],"backgroundTag":"invalid-config-value","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"}