Вы можете решить эту проблему, установив событие для каждого элемента.Это можно сделать, установив стиль ваших элементов, например:
<TreeView x:Name="MyTreeView">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseDoubleClick"
Handler="HandleItemDoubleClick"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
Допустим, у вас есть древовидное представление с минимальным элементом, например
public class Item
{
public string Name { get; set; }
}
, с некоторыми элементами внутри:
MyTreeView.Items.Add(new Item { Name = "1" });
MyTreeView.Items.Add(new Item { Name = "2" });
Затем вы можете получить доступ к нажатому элементу в обработчике, например:
private void HandleItemDoubleClick(object sender, RoutedEventArgs e)
{
if (((TreeViewItem)sender).DataContext is Item item)
{
Debug.WriteLine(item.Name);
}
}