2011-04-29 5 views
2

여기에 문제가 있습니다. TreeView에 약 100.000 개의 요소를 표시하려고합니다. 기본 WPF TreeView를 사용하면 모든 것이 작동하지만 사용자 정의 TreeView (현재는 ItemsControl 만 사용)를 사용하면 가상화가 더 이상 작동하지 않는 것 같습니다. 그 일해서는 안TreeView의 VirtualizingStackPanel이 가상화되지 않습니다.

<Style TargetType="{x:Type my:MultiSelectionTreeView}"> 
    <Setter Property="TreeView.Background" Value="Transparent"/> 
    <Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True"/> 
    <Setter Property="VirtualizingStackPanel.VirtualizationMode" Value="Recycling"/> 
    <Setter Property="TreeView.OverridesDefaultStyle" Value="True" /> 
    <Setter Property="ItemsControl.ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <VirtualizingStackPanel IsItemsHost="True"/> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="TreeView.Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type my:MultiSelectionTreeView}"> 
       <Border Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}"> 
        <ScrollViewer Focusable="True" CanContentScroll="true" 
            Padding="4" 
            VerticalScrollBarVisibility="Auto"> 
         <ItemsPresenter HorizontalAlignment="Stretch"/> 
        </ScrollViewer> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

항목은 데이터 바인딩과 ObservableCollection에에 있습니다 웹을 통해 연구하는 동안, 나는 몇 가지 솔루션을 시도했지만 그들 중 누구도 일 것 같다 ... 여기 내 XAML입니다 문제는 ...하지만 그것은 무엇입니까 ???

접견,

위르겐

답변

2

VirtualizingStackPanel이 트 리뷰 및 TreeViewItem을 찾습니다 특별한 코드가 있습니다. 또한 TreeViewItem은 구현할 수없는 내부 인터페이스 인 VirtualizingStackPanel.IProvideStackingSize을 구현합니다.

TreeView와 같은 항목의 계층 구조를 복제하려는 경우 ItemsViewrol이 아닌 가상화를 사용하려면 TreeView에서 파생되어야합니다.

+0

grmph, 모든 것이 가능하지만 충분히 깊게 본다면 너무 많은 비현실적이고 제한적인 것이 있습니다. 오, 그렇게하십시오. 감사! – opiswahn

관련 문제