This is the code I have set up for binding the TreeView from a Tree data structure in my code:
public class ExtendedTreeView : TreeView
{
public ExtendedTreeView()
: base()
{
this.SelectedItemChanged += new RoutedPropertyChangedEventHandler<object>(___ICH);
}
void ___ICH(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (SelectedItem != null)
{
SetValue(SelectedItem_Property, SelectedItem);
}
}
public object SelectedItem_
{
get { return (object)GetValue(SelectedItem_Property); }
set { SetValue(SelectedItem_Property, value); }
}
public static readonly DependencyProperty SelectedItem_Property = DependencyProperty.Register("SelectedItem_", typeof(object), typeof(ExtendedTreeView), new UIPropertyMetadata(null));
}
With this in the xaml:
<local:ExtendedTreeView ItemsSource="{Binding Items}" SelectedItem_="{Binding Item, Mode=TwoWay}">
.....
<xn:ExtendedTreeView.ContextMenu>
<ContextMenu>
<MenuItem Header="Add New"/>
</ContextMenu>
</xn:ExtendedTreeView.ContextMenu>
</local:ExtendedTreeView>
This works for getting the left clicked item, but I how do I get the right clicked item so that I can show a context menu and allow user to add/modify a child node at that level in the tree?