2013-01-03 4 views
1

데이터 격자를 포함하는 wpf 양식이 있습니다. DataGrid의 열 중 하나는 combobox 유형입니다. 콤보 상자의 ItemsSource 속성에는 1000 개의 항목이 있습니다. 따라서 콤보 상자 (렌더링 문제, 나는 믿는다) 외의 화살표를 클릭하면 값을 표시하는 데 상당한 시간이 걸립니다. 콤보 상자에 항목을 더 빨리, 사실상 지연없이 표시하려면 어떻게해야합니까?wpf datagrid의 Combox 열 성능 문제

+0

, 사용자가 하나의 항목을 선택하는 항목의 1000 년대를 스크롤합니다 어디 디자인에 의문을 제기 것, 특히 그것이 그 자체로 많은 것 (당신이 DataGrid를 사용하고 있기 때문에 내가 생각한 것처럼)이다. –

답변

4

당신의 콤보 박스에 올려보세요. 한 번에 모든 항목을로드하는 것이 아니라로드하는 동안 항목을로드해야합니다.

데이터 그리드 내부를 들어, 난 항상 내 콤보 컬럼에 대한 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> 
+0

주어진 답변은 콤보 상자에서는 잘 작동하지만 셀 유형이 데이터 격자 내에서 콤보 상자 인 경우에는 적합하지 않습니다. 사용 된 컨트롤이 WPF 콤보 상자 컨트롤 인 경우 작동합니다. 내가 뭘 찾고 있어요 cellgype = 콤보 상자 내에서 데이터 격자 – Alice

+1

@ 로한 - 작동하도록 스타일 DataGridComboBoxColumn의 ItemsPanel을 설정할 수 있습니다 .. –

+0

DataGridTemplateColumn을 사용하여 DataTemplate을 콤보 박스로 변경하면 당신은 내가 준 예제를 사용할 수 있습니다. xaml을 사용하여 내 대답을 업데이트하겠습니다. – emybob