WPF中如何通过C#代码为ComboBox配置VirtualizingStackPanel虚拟化面板
解决方案
你只需要为ComboBox的ItemsPanel属性赋值一个装载了VirtualizingStackPanel的ItemsPanelTemplate即可,完整代码如下:
ComboBox newCombo = new ComboBox(); newCombo.IsEditable = true; newCombo.DisplayMemberPath = "DisplayName"; newCombo.SelectedValuePath = "Value"; // 若要和示例XAML的绑定逻辑一致,可替换为下方绑定代码,不需要则保留你原有的硬编码赋值 // newCombo.SetBinding(ComboBox.SelectedValueProperty, new Binding("Value")); newCombo.SelectedValue = "Value"; // 配置虚拟化StackPanel核心代码 ItemsPanelTemplate virtualPanelTemplate = new ItemsPanelTemplate(); FrameworkElementFactory panelFactory = new FrameworkElementFactory(typeof(VirtualizingStackPanel)); virtualPanelTemplate.VisualTree = panelFactory; newCombo.ItemsPanel = virtualPanelTemplate;
补充说明
上述代码为WPF环境下的标准实现,和你提供的XAML配置效果完全一致,会自动启用ComboBox下拉列表的UI虚拟化能力,当选项量级较大时可以显著降低内存占用、提升滚动和加载性能。
内容的提问来源于stack exchange,提问作者Liam
相关产品推荐
相关产品推荐

