2013-01-03 7 views
1

У меня есть форма WPF, который содержит DataGrid. 1 столбцов в datagrid имеет тип combobox. В свойстве ItemsSource этого поля есть 1000 элементов. Следовательно, для отображения значений требуется значительное количество времени, когда нажимается стрелка, кроме комбинированного блока (проблема с обработкой, я считаю). Как мы можем сделать combo-box дисплеем предметов быстрее, практически без запаздывания?Combox столбец в вопросе производительности WPF DataGrid

+0

Как и в сторону, я бы вопрос дизайна, где пользователь должен прокручивать 1000-х элементов, чтобы выбрать один элемент, особенно если он сам по себе является одним из многих (как я предполагаю, так как вы используете datagrid). –

ответ

4

Попробуйте положить это на ваш ComboBox. Вместо того, чтобы сразу загружать все предметы, это должно заставить их загружать их при их просмотре.

Для внутри DataGrid, я всегда использую DataGridTemplateColumn для моих COMBOBOX колонок:

<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> 
+0

Этот ответ хорошо подходит для комбинированного поля, но не если тип ячейки является комбинированным полем внутри файла данных. Он работает, если используется элемент управления WPF combo-box. То, что я ищу является типом клеток = выпадающей в DataGrid – Alice

+1

@Rohan - Вы можете установить ItemsPanel в стиле на DataGridComboBoxColumn, чтобы заставить его работать .. –

+0

Если вы используете DataGridTemplateColumn и изменить его DataTemplate быть выпадающим, то вы можете использовать пример, который я дал. Я обновлю свой ответ с помощью xaml для него – emybob

Смежные вопросы