Событие OnExpanded для любого элемента в дереве

Я хотел бы получить событие для любого расширения treeviewitem в моем древовидной структуре.

Причина этого, немного не связанная с исходным вопросом: Я создаю дерево, которое тесно связано с деревом файлов xml, но я разрешаю элемент include в xml, чтобы дерево могло перемещаться по нескольким файлам. Я хотел бы установить свойство itemssource treeviewitems в моем treeview при расширении.

Ответы

Ответ 1

Вы можете использовать событие TreeViewItem.Expanded как присоединенное событие:

<TreeView TreeViewItem.Expanded="TreeViewItem_Expanded"
          ItemsSource="{Binding}">
    ...
</TreeView/>

В кодировке вы можете идентифицировать TreeViewItem, который инициировал событие, используя свойство OriginalSource:

    private void TreeViewItem_Expanded(object sender, RoutedEventArgs e)
    {
        TreeViewItem tvi = e.OriginalSource as TreeViewItem;
        if (tvi != null)
        {
            MessageBox.Show(string.Format("TreeNode '{0}' was expanded", tvi.Header));
        }
    }