I'm a beginner at WPf, and studying TreeView and TreeViewItem. I want add Event to each TreeViewItem. But the handler's sender is always root item whatever I click rootitem or childItem. this is my code.
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<EventSetter Event="MouseRightButtonDown" Handler="TreeViewItem_MouseRightButtonDown_2"/>
</Style>
</TreeView.ItemContainerStyle>
<TreeViewItem Header="1">
<TreeViewItem Header="1.1"></TreeViewItem>
<TreeViewItem Header="1.2"></TreeViewItem>
<TreeViewItem Header="1.3"></TreeViewItem>
<TreeViewItem Header="1.4"></TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="2">
<TreeViewItem Header="2.2"></TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="3">
<TreeViewItem Header="2.2"></TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="4">
<TreeViewItem Header="2.2"></TreeViewItem>
</TreeViewItem>
</TreeView>
and this is handler
private void TreeViewItem_MouseRightButtonDown_2(object sender, MouseButtonEventArgs e)
{
TreeViewItem t = sender as TreeViewItem;
MessageBox.Show(t.Header.ToString());
}
The messageBox always show 1, 2, 3 ... not 1.1, 1.2, 2.1... I want to get the item exactly clicked, How can I do? Thank you!
You have to set implicit style for all tree view items,
ItemContainerStylebeing applied to the top level/root items:and also prevent the event bubbles up with
e.Handled = true;