3

データグリッドを含む wpf フォームがあります。データグリッドの列の 1 つはコンボボックス型です。コンボ ボックスの ItemsSource プロパティには、何千もの項目があります。したがって、コンボボックスの横の矢印(レンダリングの問題だと思います)をクリックすると、値を表示するのにかなりの時間がかかります。コンボボックスにアイテムをより速く、実質的に遅延なく表示させるにはどうすればよいでしょうか?

4

1 に答える 1

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>  
于 2013-01-03T16:59:11.050 に答える