Интернационализация трудна, вот несколько вещей, которые я узнал из работы с 2 веб-сайтами, которые были на более чем 20 различных языках:
Ресурсы:
Проблема в том, что каждый 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";
}