Проблема в том, что каждый TreeViewItem
сам по себе является ItemsControl
, поэтому каждый из них управляет своими собственными контейнерами для своих детей.
Однако, есть очень простой способ сделать то, что вы хотите сделать: вместо регистрации на событие SelectedItemChanged
, зарегистрируйтесь на событие TreeViewItem.Selected
, которое будет всплывать с OriginalSource
, установленным для выбранного TreeViewItem
.
XAML:
<TreeView ItemsSource="{StaticResource Array}" TreeViewItem.Selected="TreeViewItem_Selected">
Код:
private void TreeViewItem_Selected(object sender, RoutedEventArgs e) {
TreeViewItem container = (TreeViewItem) e.OriginalSource;
Title = container != null ? container.ToString() : "null";
}