2010-03-28 4 views
0

Отладка этого класса методом 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; 
    } 
} 

ответ

0

Вы можете установить точку останова и проверить трассировки стека, чтобы проверить, но я считаю, что это называется один раз с нулевым входом, когда визуальное дерево устанавливается и второй раз, когда переплеты фактически заселена.

0

Если ваш селектор должен был предоставить «Пусто» или «Загрузка», первый вызов - это то, что дает вашему селектору возможность предоставить этот шаблон во время загрузки элементов.

+0

Здравствуйте, MIke, У вас есть информация/ссылки о вашем источнике о пустом/загрузке и т. Д.? Я ничего не нашел. – msfanboy