In other questions/answers about putting ContextMenu on TreeView elements I always see a reference to TreeView.ItemTemplate. This is great when you want the same menu for all items, What if I want just one TreeViewItem to have a context menu? I figured that would do it:
<TreeViewItem>
<TreeViewItem.ContextMenu>
<ContextMenu>
<MenuItem Header="Remove This" Click="RemoveRecorder_Click"
DataContext="{Binding RelativeSource={RelativeSource
Mode=FindAncestor,AncestorType=TreeViewItem}}"/>
</ContextMenu>
</TreeViewItem.ContextMenu>
</TreeViewItem>
But when I look at DataContext inside RemoveRecorder_Click, DataContext is null.
private void RemoveRecorder_Click(object sender, RoutedEventArgs e)
{
if ((sender as MenuItem).DataContext is TreeViewItem)
{
TreeViewItem tvi = (sender as MenuItem).DataContext as TreeViewItem;
tvi.Parent.RemoveChild(tvi);
}
}