2011-12-20 12 views
6

TreeViewのSelectedItemをnullまたは同等のものに設定する簡単な方法はありますか?また、私はC#ではなくXAMLでこれを行う必要があります。TreeViewからSelectedItemを削除します

敬具、

ガブリエル

+0

正確に何をしたいですか?なぜSelectedItemをnullにする必要がありますか? –

+0

彼はちょうど別のフィールドの値に依存して、ユーザがツリービューノードを新しく選択しなければならないと思うので、Karlは答えを –

答えて

6

わからない項目を削除したい場合は、

を何を意味するか、これを使用する:

treeView1.Items.Remove(treeView1.SelectedItem); 

をあなたが選択を削除する場合ツリービューから、これを使用します:

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

にしました。 'SelectedItem'は'オブジェクト 'なので、それをキャストする必要があります。 – Ray

+0

ああ、申し訳ありませんが、それをTreeViewItemにキャストする必要があります - editet – Karl

+2

TreeViewがデータバインドされている場合はどうしますか? –

3

選択されているものを選択解除しますか?あなたが明示的にツリービューアイテム(複数可)を使用してツリービューを構築する際

((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; 
     } 
    } 
} 
関連する問題