В моем WPF у меня есть два TreeView.Один - это классы, а другой - для тестирования данных для некоторых элементов.Теперь я пытаюсь сделать следующее: когда вы дважды щелкнете по узлу в дереве классов, в дереве элементов соответствующий узел должен развернуться и выбрать элемент внутри.Дерево выглядит так:
-Main Node:
-Elements #Name# :
-element 1
-element 2
-element 3
-element 4
-Elements #Other Name# :
-...
Каждый «Элемент» представляет собой TreeViewItem, а каждый «элемент» представляет собой текстовый блок с большим количеством экспериментальных данных.
Я просто перебираю дерево, пока не найду «Элементы» с соответствующим именем, затем просматриваю его Предметы («элемент») и затем выбираю его.
Но есть странный случай: вклпри первом запуске он успешно раскрывает «Элементы», которые мне нужны, но не может выбрать «элемент» внутри с ItemContainerGenerator, давая мне значение NULL, хотя при любом другом запуске, кроме первого, он будет прекрасно работать внутри этих «Элементов», независимо от того, что яделать с деревом (расширение, свертывание, приклеивание к другому дереву).Что может быть не так?
private void TestTreeSearchAndExpand(TreeViewItem SearchedItem, string IHeader, string pin-name)
{
if (SearchedItem != null)
{
if (SearchedItem.Name.ToString() == IHeader)
{
SearchedItem.IsExpanded = true;
foreach(FrameworkElement x in SearchedItem.Items)
{
if (x.Name == pinname)
{
TreeViewItem PContainer = SearchedItem.ItemContainerGenerator.ContainerFromItem(x) as TreeViewItem;
if (PContainer != null)
{
PContainer.BringIntoView();
PContainer.IsSelected = true;
}
}
}
}
else
{
if (SearchedItem.HasItems)
{
foreach (var item in SearchedItem.Items)
{
TreeViewItem tmp = item as TreeViewItem;
TestTreeSearchAndExpand(tmp, IHeader, pinname);
}
}
}
}
}