2010-03-28 14 views
0

Débogage de cette classe la méthode SelectTemplate est exécutée 2 fois, mais pourquoi?Pourquoi la méthode SelectTemplate s'exécute-t-elle 2 fois en mode débogage?

La première fois que l'élément est toujours nul.

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

Répondre

0

Vous pouvez définir un point de rupture et de vérifier la trace de la pile pour vérifier, mais je crois qu'il est appelé une fois avec une entrée nulle lorsque l'arbre visuel est mis en place et la deuxième fois est quand les liaisons sont effectivement peuplées.

0

Si votre sélecteur devait rechercher "Empty" ou "Loading", le premier appel permet à votre sélecteur de fournir ce modèle pendant le chargement des éléments.

+0

Bonjour MIke, Avez-vous des informations/liens sur votre source au sujet du chargement/etc vide? Je n'ai rien trouvé. – msfanboy