2010-12-30 8 views
2

TreeviewItemを削除しようとしています私は選択でそれを行うことができます。 選択肢と同じことをContextMenuからやりたいと思います。 以下は、ツリーとコンテキストメニューを作成するための私のコードです。解決する方法を提案してください。WPF:ContextMenuからのTreeViewItemの削除

XAML:

<TreeView Name="treeFileSystem" TreeViewItem.Selected="TreeViewItemSelected" > 
    <TreeViewItem Header="Suite" Name="MYTree" Tag="hi" IsExpanded="True"> 
       <TreeViewItem Name="treeFileSystem1" />      
    </TreeViewItem> 
</TreeView> 

CODE:

private void TestsTreeViewPageFunction_Loaded(object sender,RoutedEventArgs e) 
     { 
      this.MYTree.Items.Clear(); 
      this.MYTree.ContextMenu = AddContexMenu("Suite"); 
      for (int j = 1; j < 5; j++) 
      { TreeViewItem Case = new TreeViewItem(); 
       Case.ContextMenu = AddContexMenu("Case"); 
       Case.Header = "Case "+j.ToString(); 
       Case.IsExpanded = true; 
       this.MYTree.Items.Add(Case); 
      } 
     } 

    private ContextMenu AddContexMenu(string var) 
     {    
      ContextMenu menu = new ContextMenu(); 
      MenuItem obj1 = new MenuItem(); 
      obj1.Click += delegate(System.Object o, RoutedEventArgs e) 
      { 
        **?????????????**   
      }; 
      obj1.Header = "Delete " + var; 
      menu.Items.Add(obj1); 
      return menu; 
     } 

     private void TreeViewItemSelected(object sender, RoutedEventArgs e) 
     { 
      TreeViewItem TreeItem = (TreeViewItem)e.OriginalSource; 
      TreeViewItem Parent = (TreeViewItem)TreeItem.Parent; 
      Parent.Items.Remove(TreeItem); 
     } 

答えて

1

私は私の問題を解決する方法を発見しました。

以下は解決策です。

obj1.Click += delegate(System.Object o, RoutedEventArgs e) 

    { 

     MenuItem menuObject = (MenuItem)o; 

TreeViewItem menutreeItem =((ContextMenu)menuObject.Parent).PlacementTarget as 

TreeViewItem; 

//To get the Tree from which the context menu is called 

TreeViewItem Parent = (TreeViewItem)menutreeItem.Parent; 

//To get the parent of the TreeViewItem 

Parent.Items.Remove(menutreeItem); 

//Removing the TreeItem from Parent 


}; 
関連する問題