2011-12-20 36 views
6

Có cách nào đơn giản để thiết lập SelectedItem của TreeView thành null hoặc tương đương không? Ngoài ra, tôi cần phải làm điều này trong C# và không phải trong XAML.Xóa SelectedItem khỏi TreeView

Trân trọng,

Gabriel

+0

Chính xác bạn muốn làm gì? Tại sao bạn cần null các SelectedItem? –

+0

Tôi nghĩ rằng anh ta chỉ muốn xóa lựa chọn, có thể phụ thuộc vào giá trị trường khác, người dùng phải chọn một nút treeview mới, vì vậy Karl đưa ra câu trả lời –

Trả lời

6

Không chắc chắn những gì bạn có nghĩa là

Nếu bạn muốn loại bỏ các mục, sử dụng này:

treeView1.Items.Remove(treeView1.SelectedItem); 

Nếu bạn muốn loại bỏ các lựa chọn từ treeview, sử dụng:

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

'SelectedItem' là một' đối tượng', do đó bạn cần truyền nó. – Ray

+0

oh, xin lỗi, bạn đã truyền nó đến một TreeViewItem - editet – Karl

+2

Bạn sẽ làm gì nếu TreeView là dữ liệu bị ràng buộc? –

3

Bạn muốn bỏ chọn những gì được chọn?

Tôi nghĩ rằng bạn muốn một cái gì đó như thế này:

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

Tất cả các câu trả lời trước sẽ rất hữu ích khi bạn xây dựng TreeView một cách rõ ràng bằng TreeViewItem (s). Nếu bạn cần giải pháp để xóa lựa chọn khi sử dụng ItemsSource, hãy sử dụng mã sau:

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; 
     } 
    } 
}