How to add a context menu to the TreeView with the deletion of the selected item?
Got treeViewItem. How to remove it now?
<TreeView x:Name="tw_tree" TreeViewItem.Expanded="TreeViewItem_Expanded" MinWidth="200" TreeViewItem.Selected="TreeViewItem_SelectedItem" Background="#FF222222" PreviewMouseRightButtonDown="tv_dep_PreviewMouseRightButtonDown"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Path=collection_node}"> <StackPanel Orientation="Horizontal"> <Image MaxHeight="30" MaxWidth="30" Source="{Binding level, Converter={StaticResource LevelToImageConverter}}"/> <TextBlock Text="{Binding name_}" > <TextBlock.ContextMenu > <ContextMenu>Delete</ContextMenu> </TextBlock.ContextMenu> </TextBlock> </StackPanel> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> private void tv_dep_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { TreeViewItem treeViewItem = VisualUpwardSearch<TreeViewItem>(e.OriginalSource as DependencyObject) as TreeViewItem; if (treeViewItem != null) { treeViewItem.Focus(); } } static DependencyObject VisualUpwardSearch<T>(DependencyObject source) { while (source != null && source.GetType() != typeof(T)) source = VisualTreeHelper.GetParent(source); return source; } Why are all the colors deleted at once? Only one is selected.
TreeViewItem treeViewItem = VisualUpwardSearch<TreeViewItem>(e.OriginalSource as DependencyObject) as TreeViewItem; if (treeViewItem != null) { treeViewItem.Focus(); ItemsControl parent = GetSelectedTreeViewItemParent(treeViewItem); parent.ItemsSource = null; parent.Items.Remove(treeViewItem);