2011-12-20 3 views
6

TreeView의 SelectedItem을 null 또는 이와 동등하게 설정할 수있는 간단한 방법이 있습니까? 또한 C# 및 XAML이 필요합니다.TreeView에서 SelectedItem 제거

안부,

가브리엘

+0

정확히 무엇을하고 싶습니까? 왜 SelectedItem을 null로해야합니까? –

+0

그는 단지 다른 필드 값에 따라 선택을 취소하고자한다고 생각합니다. 사용자가 treeview 노드를 새로 선택해야하므로 Karl이 대답을 –

답변

6

하지 당신이 항목을 제거 할 경우

을 무엇을 의미하는지, 이것을 사용 :

treeView1.Items.Remove(treeView1.SelectedItem); 

당신이 선택을 제거하려면 트 리뷰에서 다음을 사용하십시오 :

((TreeViewItem)treeView1.SelectedItem).IsSelected = false; 
+0

에게주었습니다. 'SelectedItem'은'객체 '이므로이를 캐스팅해야합니다. – Ray

+0

오, 죄송합니다, 당신은 TreeViewItem에 그것을 던져 넣어야했습니다 - editet – Karl

+2

TreeView가 데이터 바인딩되면 어떻게 할 것인가? –

3

선택한 항목의 선택을 취소 하시겠습니까? 명시 적으로 TreeViewItem (들)를 사용하여 트 리뷰를 빌드 할 때

((TreeViewItem)tv.SelectedItem).IsSelected = false; 
7

이전의 모든 답변이 도움이 될 것입니다 :

난 당신이 뭔가를하려는 생각합니다. ItemsSource를 사용할 때 선택을 지우는 해답이 필요하면 다음 코드를 사용하십시오.

private static TreeViewItem FindTreeViewSelectedItemContainer(ItemsControl root, object selection) 
{ 
    var item = root.ItemContainerGenerator.ContainerFromItem(selection) as TreeViewItem; 
    if (item == null) 
    { 
     foreach (var subItem in root.Items) 
     { 
      item = FindTreeViewSelectedItemContainer((TreeViewItem)root.ItemContainerGenerator.ContainerFromItem(subItem), selection); 
      if (item != null) 
      { 
       break; 
      } 
     } 
    } 

    return item; 
} 

// Example: 
private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    if (TV.SelectedItem != null) 
    { 
     var container = FindTreeViewSelectedItemContainer(TV, TV.SelectedItem); 
     if (container != null) 
     { 
      container.IsSelected = false; 
     } 
    } 
}