Почему метод SelectTemplate запускается 2 раза в режиме отладки?
Отлаживая этот класс, метод SelectTemplate запускается 2 раза, но почему?
Первый раз элемент всегда нулевой.
public class PersonDataTemplateSelector : DataTemplateSelector
{
public override DataTemplate SelectTemplate(object item,DependencyObject container)
{
if (item is Person)
{
Person person = item as Person;
Window window = Application.Current.MainWindow;
if (System.ComponentModel.DesignerProperties.GetIsInDesignMode( window))
return null;
if (person.Gender == "male")
return window.FindResource("boysViewTemplate") as DataTemplate;
else
return window.FindResource("girlsViewTemplate") as DataTemplate;
}
return null;
}
}
2 ответа
Если ваш селектор должен был искать "Пусто" или "Загрузка", первый вызов - это то, что дает вашему селектору возможность предоставить этот шаблон во время загрузки элементов.
Вы можете установить точку останова и проверить трассировку стека, чтобы проверить, но я считаю, что она вызывается один раз с нулевым вводом, когда настраивается визуальное дерево, и второй раз, когда привязки фактически заполняются.