treeviewitem通过eventsetter的previewmouserightbuttondown事件弹出菜单,选择菜单中的添加按钮添加二级treeviewitem
<TreeViewItem Header="Parent Item">
<TreeViewItem Header="Child Item 1"/>
<TreeViewItem Header="Child Item 2"/>
<TreeViewItem Header="Child Item 3"/>
<TreeViewItem Header="Child Item 4">
<TreeViewItem Header="Subchild Item 1"/>
<TreeViewItem Header="Subchild Item 2"/>
<TreeViewItem Header="Subchild Item 3"/>
</TreeViewItem>
</TreeViewItem>
<ContextMenu x:Key="TreeViewItemContextMenu">
<MenuItem Header="Add Child Item" Click="AddChildItem_Click"/>
</ContextMenu>
private void AddChildItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = (MenuItem)sender;
TreeViewItem parentItem = (TreeViewItem)menuItem.DataContext;
TreeViewItem newChildItem = new TreeViewItem();
newChildItem.Header = "New Child Item";
parentItem.Items.Add(newChildItem);
}
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<EventSetter Event="PreviewMouseRightButtonDown" Handler="TreeViewItem_PreviewMouseRightButtonDown"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
private void TreeViewItem_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
TreeViewItem treeViewItem = (TreeViewItem)sender;
ContextMenu contextMenu = (ContextMenu)Resources["TreeViewItemContextMenu"];
contextMenu.DataContext = treeViewItem;
contextMenu.IsOpen = true;
}
treeviewitem通过eventsetter的previewmouserightbuttondown事件弹出菜单,菜单中包含添加、删除,点击添加按钮添加二级treeviewitem
<TreeViewItem Header="Parent Item">
<TreeViewItem Header="Child Item 1"/>
<TreeViewItem Header="Child Item 2"/>
<TreeViewItem Header="Child Item 3"/>
<TreeViewItem Header="Child Item 4">
<TreeViewItem Header="Subchild Item 1"/>
<TreeViewItem Header="Subchild Item 2"/>
<TreeViewItem Header="Subchild Item 3"/>
</TreeViewItem>
</TreeViewItem>
<ContextMenu x:Key="TreeViewItemContextMenu">
<MenuItem Header="Add Child Item" Click="AddChildItem_Click"/>
<MenuItem Header="Delete Item" Click="DeleteItem_Click"/>
</ContextMenu>
private void AddChildItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = (MenuItem)sender;
TreeViewItem parentItem = (TreeViewItem)menuItem.DataContext;
TreeViewItem newChildItem = new TreeViewItem();
newChildItem.Header = "New Child Item";
parentItem.Items.Add(newChildItem);
}
private void DeleteItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = (MenuItem)sender;
TreeViewItem itemToDelete = (TreeViewItem)menuItem.DataContext;
TreeViewItem parentItem = (TreeViewItem)itemToDelete.Parent;
parentItem.Items.Remove(itemToDelete);
}
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<EventSetter Event="PreviewMouseRightButtonDown" Handler="TreeViewItem_PreviewMouseRightButtonDown"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
private void TreeViewItem_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
TreeViewItem treeViewItem = (TreeViewItem)sender;
ContextMenu contextMenu = (ContextMenu)Resources["TreeViewItemContextMenu"];
contextMenu.DataContext = treeViewItem;
contextMenu.IsOpen = true;
}