2014-11-14 2 views
0

virutalzation을 true로 만들었을 때 콤보 상자 스타일과 같은 이상한 문제가 발생했습니다. 콤보 상자에서 콤보 상자 항목의 모든 확인란을 선택했는지 확인했습니다.Combobox 가상화 문제

은 ItemsPanel 속성에, 내가

<Setter Property="ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
      <VirtualizingStackPanel IsItemsHost="True" 
            IsVirtualizing="True" 
            VirtualizationMode="Recycling" /> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
     </Setter> 

아래로 그러나 이전과 뷰를 스크롤 한 후 VirtualizingStackPanel 일부 사용자 지정 스타일을했습니다, 그것은 다릅니다.

는 예를 들어, 여기에 내가 여기에 NULL을 제외한 아무것도 얻을,

ComboBoxItem cmbItem = ComboBox1.ItemContainerGenerator.ContainerFromItem(ComboBox1.Items[0]) as ComboBoxItem; 

으로 항목 패널을 아래로 스크롤 한 후 콤보 상자의 첫 번째 항목을 얻으려고하지만.

어쨌든 우리는 virutalization을 사용하여 이것을 달성 할 수 있습니까? (나는 이미 가상화하고 있음을 알고있다!). 또는 가상화를 제거하고 다른 솔루션을 생각해야합니다. 우리는 virutalization 속성없이 콤보 박스가 매우 느리게로드되는 것을 보았습니다.

의견이 있으십니까? 사전에

감사합니다! :)

+0

왜 첫 번째 (또는 특정) ComboBoxItem에 액세스하겠습니까? 어쩌면 여기에 또 다른 접근법이있을 수 있습니다. 가상화 모드에서 얻고 자하는 항목이 실제로 존재하지 않을 수도 있습니다 (보이지 않고로드되지 않음). 따라서 콜백/이벤트를 처리해야합니다. –

+0

첫 번째 콤보 박스 항목은 '모두 선택'확인란의 유형입니다. 체크하면 모든 콤보 박스 항목이 선택됩니다. 그리고 일부 콜백/이벤트를 처리한다고 말하면 코드에서 추가 오버 헤드가 발생할 것이라고 생각합니다. –

+0

모든 확인란을 선택하고 *** 데이터 항목 ***을 수정하려면 각 CheckBox가 데이터 항목의 일부 기본 부울 속성과 일치해야합니다. –

답변

0

NULL은 가상화의 결과입니다. 가상화/재활용되는 ComboBoxItem 인스턴스입니다. 컬렉션의 표시 항목에만 ComboBoxItem이 할당되므로 보이지 않는 항목에 대해 ComboBoxItem을 요청하면 NULL이 반환됩니다.