2010-07-13 4 views
3

내 Treeview를 반복하면서 모든 노드를 확장하려고 시도하지만 실행시 InvalidCastException으로 실행됩니다.모든 WPF Treeview 항목을 확장했습니다.

'System.Data.DataRowView'형식의 개체를 'System.Windows.Controls.TreeViewItem'형식으로 캐스팅 할 수 없습니다.

내 코드;

foreach (TreeViewItem treeitem in thetreeView.Items) 
{ 
    treeitem.IsExpanded = true; 
} 

아이디어가 있으십니까? 나는 이것을 단추로 해고하고 싶다.

답변

13

은이 도움이 될 수도 있습니다 링크를 통해 이동하시기 바랍니다 코드에 대한이 스타일

<TreeView.ItemContainerStyle> 
    <Style TargetType="TreeViewItem"> 
     <Setter Property="IsExpanded" Value="True" /> 
    </Style> 
</TreeView.ItemContainerStyle> 

를 추가 유

http://bea.stollnitz.com/blog/?p=55

+1

을 기반으로, 트 리뷰의 초기 상태는 폐쇄되어야한다. 내 생각은 붕괴/모든 버튼을 확장하는 것입니다. – wonea

+0

그 내용은이 기사를 http://bea.stollnitz.com/blog/?p=55 –

+0

와 함께 읽으십시오. Bea의 포스팅은 이것의 기본 사항을 다루었습니다. –

0

Bag of tricks 나무를 가지 "트 리뷰는 확장"이라는 데모를 가지고 모든 항목을 펼치고 모든 버튼을 축소하는 것으로보기 (및 일부 추가)

4

"해킹"해결책을 찾았습니다. 솔루션

나는 두 개의 버튼을 추가 한 (키 쇼어 쿠마르에 의해) here을 제안 것은 상속에 관여하지 않습니다 - "모두 확장" "모두 축소"와. 뒤에

코드는 : 나는 런타임에이 할 일 싶습니다하지만

private void btnCollapseAll_Click(object sender, RoutedEventArgs e) 
    { 
     foreach (var item in treeView.Items) 
     { 
      DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item); 
      CollapseTreeviewItems(((TreeViewItem)dObject)); 
     } 
    } 

    private void btnExpandAll_Click(object sender, RoutedEventArgs e) 
    { 
     foreach (var item in treeView.Items) 
     { 
      DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item); 
      ((TreeViewItem)dObject).ExpandSubtree(); 
     } 
    } 

    private void CollapseTreeviewItems(TreeViewItem Item) 
    { 
     Item.IsExpanded = false; 

     foreach (var item in Item.Items) 
     { 
      DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item); 

      if (dObject != null) 
      { 
       ((TreeViewItem)dObject).IsExpanded = false; 

       if (((TreeViewItem)dObject).HasItems) 
       { 
        CollapseTreeviewItems(((TreeViewItem)dObject)); 
       } 
      } 
     } 
    } 

내 솔루션은 this