In TreeViewItem_OnExpanded event I have below codes.
var expandedTreeViewItem = e.OriginalSource as TreeViewItem;
var child = expandedTreeViewItem.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
expandedTreeViewItem.ItemsSource = // Update ItemsSource
var child = expandedTreeViewItem.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
There is no problem when I get the child before change the ItemSource of expanded tree view item, but after change the ItemSource, child will be null.
The item in ContainerFromItem(item) is same and exist before and after changing ItemSource. The other parts of code works properly. What can I do to get the element after ItemSource changed?
TreeViewItem_OnExpanded event codes
private void TreeViewItem_OnExpanded(object sender, RoutedEventArgs e)
{
var expandedTreeViewItem = e.OriginalSource as TreeViewItem;
var directoryInfo = expandedTreeViewItem?.Items[0] as DirectoryInfoModel;
if (expandedTreeViewItem == null || directoryInfo?.HasChild == false) return;
_folderExplorerViewModel.GetDirectories(directoryInfo?.DirectoryInfo, directoryInfo?.SubDirectoriesCollection);
expandedTreeViewItem.ItemsSource = directoryInfo?.SubDirectoriesCollection;
var expandedItemHeader = expandedTreeViewItem?.Template.FindName("PART_Header", expandedTreeViewItem) as ContentPresenter;
var expandedItemCheckBox = expandedItemHeader?.ContentTemplate.FindName("CheckBoxFolderItem", expandedItemHeader) as CheckBox;
foreach (var item in expandedTreeViewItem.Items)
{
var childItem = expandedTreeViewItem.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
var childHeader = childItem?.Template.FindName("PART_Header", childItem) as ContentPresenter;
var childCheckBox = childHeader?.ContentTemplate.FindName("CheckBoxFolderItem", childHeader) as CheckBox;
if (childCheckBox != null && expandedItemCheckBox != null)
{
childCheckBox.IsChecked = expandedItemCheckBox.IsChecked;
}
}
}
childItem is always null when I use it after ItemesSource changed. But before that, it works.
Thanks a lot.