I’m trying to select TreeViewItem on right mouse click. There is my XAML:
<TreeView x:Name="treeView" ItemsSource ="{Binding DisplayedDocuments}"
SelectedItemChanged="TreeView_SelectedItemChanged" IsEnabled="True"
MouseRightButtonDown="treeView_MouseRightButtonDown">
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding Path=DisplayedSubItems}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Converter={StaticResource docImageConverter}}"/>
<TextBlock Width="5"></TextBlock>
<TextBlock Text="{Binding Caption}"
MouseRightButtonDown="TextBlock_MouseRightButtonDown"/>
</StackPanel>
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
</TreeView>
When I click on treeViewItem sometimes TextBlock.MouseRightButtonDown raises instead of treeView.MouseRightButtonDown. So, I want to get treeViewItem by TextBlock in TextBlock_MouseRightButtonDown. I’ve tried to get it this way:
TextBlock docCaption = e.OriginalSource as TextBlock;
StackPanel stackPanel = docCaption.Parent as StackPanel;
But stackPanel.Parent is null.
I’ve tried to find the control by name:
TreeViewItem treeViewItem = (TreeViewItem)treeView.FindName(docCaption.Text);
but it returns null.
Use the VisualTreeHelper to get the parent: http://blogs.msdn.com/b/kmahone/archive/2009/03/29/visualtreehelper.aspx
http://miguelmadero.blogspot.com.au/2008/07/use-visualtreehelper-to-navigate.html