wpf datagrid 性能问题中的 Combox 列

Roh*_*uza 3 wpf datagrid combobox

我有一个包含数据网格的 wpf 表单。数据网格中的 1 列是组合框类型。组合框的 ItemsSource 属性中有 1000 个项目。因此,当单击组合框(我相信是渲染问题)之外的箭头时,需要花费大量时间来显示值。我们如何让组合框更快地显示项目,几乎没有延迟?

emy*_*bob 6

试着把它放到你的组合框上。这应该使它在您查看它们时加载它们,而不是一次加载所有项目。

对于数据网格内部,我总是使用 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>  
Run Code Online (Sandbox Code Playgroud)