ItemsControl и DataTemplate

Кажется, что требуется некоторое время, чтобы табличка данных была установлена ​​во вновь созданный элемент. Это похоже на Как я могу получить DataTemplate (и определенные объекты) элемента в ItemsControl? но это тоже не дает удовлетворительного ответа.

var newIndex = this.Items.Add(new object()); // new "data"
var newContainer = (ContentPresenter) this.ItemContainerGenerator.ContainerFromIndex(newIndex);
var uiElem = newContainer.FindName("txt");

Вызов findname вернет null, поэтому VisualTreeHelper.GetChildrenCount = 0. Если я дам ему некоторое время, шаблон будет привязан и все будет хорошо, но это недетерминировано. Кто-нибудь знает о событии или способе принудительного связывания шаблона немедленно?

Спасибо


person hammett    schedule 30.10.2012    source источник
comment
Для запуска своего код в более поздней версии DispatcherPriority, чем Render, поэтому ваш код запускается после того, как рендеринг произошел   -  person Rachel    schedule 30.10.2012


Ответы (1)


Приложения могут вызывать ApplyTemplate (), чтобы гарантировать, что визуальное дерево элемента завершено. Этот шаг гарантии может быть необходим, если код будет проверять дочерние элементы в дереве.

person Dtex    schedule 31.10.2012