【问题标题】:Combox column in wpf datagrid performance issuewpf datagrid性能问题中的组合列
【发布时间】:2012-12-18 01:57:09
【问题描述】:

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

【问题讨论】:

  • 顺便说一句,我会质疑用户必须滚动浏览 1000 个项目才能选择单个项目的设计,特别是如果它本身就是众多项目之一(因为我假设你正在使用一个数据网格)。

标签: wpf datagrid combobox


【解决方案1】:

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

对于数据网格内部,我总是将 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>  

【讨论】:

  • 给定的答案适用于组合框,但如果单元格类型是数据网格中的组合框则不行。如果使用的控件是 WPF 组合框控件,则它可以工作。我正在寻找的是数据网格中的 celltype = 组合框
  • @Rohan - 您可以将 ItemsPanel 设置为 DataGridComboBoxColumn 上的样式以使其工作..
  • 如果您使用 DataGridTemplateColumn 并将其 DataTemplate 更改为组合框,那么您可以使用我给出的示例。我会用 xaml 更新我的答案
  • 谢谢,会很有帮助的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 2013-09-30
  • 2013-05-12
  • 2011-09-20
  • 2012-07-07
  • 2018-06-24
  • 2010-12-14
相关资源
最近更新 更多