WPF treeview не расширяется правильно в первый раз. Он работает, если загрузка повторяется в том же жизненном цикле
Привет,
я пытаюсь расширить xml-дерево до первого уровня в wpf, я использую для этого прикрепленное свойство.
я столкнулся с проблемой, когда я загружаю xml fo r в первый раз в то время ,
здесь впервые " класс UIElement.ItemContainerGenerator.ContainerFromItem() "возвращает null, но на том же жизненном цикле, если я пытаюсь загрузить xml, это свойство работает правильно.
TreeViewItem treeItem = uiElement.ItemContainerGenerator.ContainerFromItem (item) как TreeViewItem;
кто-нибудь может мне помочь.
Что я уже пробовал:
ниже этой линии дает значение null , эта функция является недействительным ContainerFromItem впервые
TreeViewItem treeItem = uiElement.ItemContainerGenerator.ContainerFromItem (item) как TreeViewItem
частных статических недействительным OnTreeviewPropertyChanged(класс DependencyObject, Д, Е DependencyPropertyChangedEventArgs)
{
пробовать
{
Дерево зависимостей = (дерево)д;
класс UIElement.Метод updatelayout();
TreeViewItem ti = GetItemFromObject(uiElement);
foreach (object item in uiElement.Предметы)
{
TreeViewItem treeItem = uiElement.ItemContainerGenerator.ContainerFromItem (item) как TreeViewItem;
if (treeItem != null)
{
// ExpandAll(treeItem, true);
treeitem, в.IsExpanded = true;
}
}
}
ловить
{
}
}
вид: treeview находится внутри вкладки
< window x: class= " WpfApplication3.MainWindow "xmlns:x=" #unknown " >
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
описание:х="http://schemas.microsoft.com/winfx/2006/xaml"
Title= "MainWindow" Height= " 350 "Width= "525">
& lt;сетка>
& lt;tabcontrol>
& lt;tabitem>
&ЛТ;TreeView элемент имя="xmltree интенсивно"> В поле HorizontalAlignment="стрейч"
Вертикальное Выравнивание= " Растяжение"
ItemTemplate= " {StaticResource NodeTemplate}"
ItemsSource= " {Binding xmldocumrnt, Mode=OneWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
Свойстваodevirtualizingstackpanel.IsVirtualizing= " False"
VirtualizingStackPanel. VirtualizationMode= " Переработка Отходов"
ВМ:ExpandXML.Функция OpenXML="{привязки ISXmlExpand,UpdateSourceTrigger=PropertyChanged, как,NotifyOnSourceUpdated=true,то режим=с двусторонним движением}" &ГТ;
&ЛТ;дерево.itemcontainerstyle&ГТ; &ЛТ;стиль формат="{х:тип TreeViewItem}"&ГТ;
< setter property=" FontSize "value= "12">
< / стиль>
Sergey Alexandrovich Kryukov
Пожалуйста, используйте отладчик и посмотрите, где выполняется строка, расширяющая узел, проверьте, происходит ли это вообще или нет.
Вы не показали, где вызывается функция OnTreeviewPropertyChanged.
Другими словами, выполните соответствующую отладочную работу. Когда и если вы узнаете, что происходит, если вы все еще не видите, как исправить код, предоставьте более полную информацию, основанную на ваших наблюдениях. В идеале вы могли бы написать какой-то упрощенный тестовый код, сосредоточившись только на одной проблеме; тогда он может быть достаточно мал, чтобы показать 100% кода. Пожалуйста, смотрите: SSCCE.
—СА