我有一个包含数据网格的WPF表单。 数据网格中的1个列是组合框类型。 组合框的ItemsSource属性中有数千个项目。 因此,当单击组合框旁边的箭头(我认为是渲染问题)时,显示值需要相当长的时间。 我们如何使组合框以几乎没有延迟的方式更快地显示项目?
尝试将此代码放入您的下拉框中。与一次性加载所有项目不同,这样可以在查看时逐个加载它们。
对于数据表格中的下拉框,我总是使用DataGridTemplateColumn:
<DataGridTemplateColumn Header="My Combo Column">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Margin="0" ItemsSource="{Binding Path=DataContext.MyCollection, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"
SelectedItem="{Binding Path=Item.Property, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Width=250 VirtualizingStackPanel.VirtualizationMode="Recycling" CanHorizontallyScroll="True"/>
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>