Код: Выделить всё
-Main
--Test Category A
---A.1
----T1
----T2
--Test Category B
---B.1
----T1
----T2
Ожидаемое поведение:
Если выбран T.1, TreeView должен развернуться следующим образом:
Код: Выделить всё
-Main
--Test Category A
---A.1
----T1
Текущее поведение:
При запуске кода только родительский узел (-Main) расширен, но (категория теста A) и (A.1) не расширены.
Если я вручную разверну и свернут TreeView заранее, код будет работать так, как ожидалось, полностью раскрывая и выбирая правильный узел.
вот мой фрагмент кода:
Код: Выделить всё
public void SelectTreeViewItem(TestCaseNode selectedItem)
{
if (selectedItem == null)
return;
TestCasesTree.UpdateLayout();
var tvi = FindTviFromObjectRecursive(TestCasesTree, selectedItem);
if (tvi != null)
{
tvi.IsSelected = true;
tvi.BringIntoView();
}
}
public static TreeViewItem FindTviFromObjectRecursive(ItemsControl ic, object o)
{
if (ic == null)
return null;
TreeViewItem result = null;
foreach (object item in ic.Items)
{
TreeViewItem tvi = ic.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
if (tvi != null)
{
tvi.IsExpanded = true;
tvi.UpdateLayout();
if (item.Equals(o))
{
result = tvi;
}
TreeViewItem childResult = FindTviFromObjectRecursive(tvi, o);
if (childResult != null)
{
result = childResult;
}
}
}
return result;
}
Будем очень благодарны за любую помощь или подсказки! Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/793 ... elect-item