2010-12-30 9 views
2

Я пытаюсь удалить TreeviewItem, который Я могу сделать это на Selection. То же самое я хочу сделать при выборе от ContextMenu. Ниже приведен мой код для создания Дерево и контекстное меню. Пожалуйста, предложите способ решить.WPF: удаление TreeViewItem из ContextMenu

XAML:

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

КОД:

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 


}; 
Смежные вопросы