TreeView не полностью расширяется и не выбирает элементC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 TreeView не полностью расширяется и не выбирает элемент

Сообщение Anonymous »

Я работаю с TreeView в своем приложении и имею следующую структуру:

Код: Выделить всё

-Main
--Test Category A
---A.1
----T1
----T2
--Test Category B
---B.1
----T1
----T2
Когда элемент (например, T.1) выбирается в окне поиска, я хочу, чтобы TreeView автоматически расширялся и выбирал соответствующий узел.
Ожидаемое поведение:
Если выбран T.1, TreeView должен развернуться следующим образом:

Код: Выделить всё

-Main
--Test Category A
---A.1
----T1
и выделите/выберите T.1.
Текущее поведение:
При запуске кода только родительский узел (-Main) расширен, но (Категория испытаний A) и (A.1) не расширены.

Код: Выделить всё

-Main
--Test Category A
Если я снова запущу поиск

Код: Выделить всё

-Main
--Test Category A
---A.1
и так далее.
Если я заранее разверну и свернут TreeView вручную, код будет работать так, как ожидалось, полностью раскрываясь и выбирая правильный узел.
вот мой фрагмент кода в файле MainWindow.xaml.cs:

Код: Выделить всё

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;
}

Код: Выделить всё

TreeViewItem tvi = ic.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
возвращает Null после первого элемента, я пытался отключить визуализацию, но это ничего не изменило.
Почему TreeView не раскрывается полностью и выбрать узел с первой попытки? Как я могу изменить код, чтобы гарантировать, что TreeView работает должным образом, не требуя ручного вмешательства?
Будем очень благодарны за любую помощь или подсказки! Спасибо.
Изменить (подробнее):
У меня есть главное окно, где пользователи могут открыть пользовательский элемент управления с именем «Поиск». Когда окно «Поиск» открыто, оно появляется поверх основного окна. В этом окне «Поиск» пользователь выбирает идентификатор TestCase и нажимает «Поиск».
Идентификатор TestCase пересылается в главное окно.
Вот соответствующая часть моего UserControl MainWindowViewModel.cs:

Код: Выделить всё

public TestCaseNode SelectedTreeViewItem
{
...

set
{
...
((MainWindow))Application.Current.MainWindow).SelectTreeViewItem(value);

}

}

public void HighlightAndSelectTestCase(TestCaseNode testCase)
{
...

SelectedTreeViewItem = testCase;

}
Вот соответствующая часть моего UserControl SearchwindowVM.cs:

Код: Выделить всё

public SearchWindowVM(MainWindowViewModel mainWindowViewModel)
{
// Code initialization...
NotifyMainWindow = (testCase) =>
{
_mainWindowViewModel.HighlightAndSelectTestCase(testCase);
};
}

public void CloseClick()
{
if (SelectedTestCase != null)
{
DialogHost.CloseDialogCommand.Execute(null, null);
NotifyMainWindow?.Invoke(SelectedTestCase);
}
}

К сожалению, я немного запутался.

Подробнее здесь: https://stackoverflow.com/questions/793 ... elect-item
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • TreeView не полностью расширяется и не выбирает элемент
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • TreeView не полностью расширяется и не выбирает элемент
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Python Tkinter Treeview: размер столбца не расширяется до высоты окна
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • SASS выбирает элемент только в том случае, если родственный элемент не существует
    Гость » » в форуме CSS
    0 Ответы
    42 Просмотры
    Последнее сообщение Гость
  • Как я могу создать плавающий элемент div, который расширяется к краям? [закрыто]
    Anonymous » » в форуме CSS
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»