2010-03-28 3 views
0

이 클래스를 디버깅 할 때 SelectTemplate 메서드는 2 번 실행되지만 그 이유는 무엇입니까?SelectTemplate 메서드가 디버그 모드에서 2 번 실행되는 이유는 무엇입니까?

처음 항목이 항상 null입니다.

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

관련 문제