2011-07-05 6 views
0

'TranscriptCell'이라는 사용자 지정 Windows Phone 7 컨트롤이 있습니다. 몇 가지 DependencyPropetys를 추가했습니다. 완벽하게 작동합니다. 나는 void override OnApplyTemplate() 방법에 중단 점을 추가 한, 그리고 내 XAML 파일에, 나는이 같은 컨트롤을 사용할 때 :DataTemplate에서 OnApplyTemplate이 부적절하게 호출되는 경우

<EUILib:TranscriptCell Title="Hello World" HostO="MSI India" /> 

중단 점은, 정확히 한 번만 트리거를 즉 방법 void OnApplyTemplate() 정확히 한 번이라고합니다. 내가 좋아하는 뭔가를 할 그러나

:

<ListBox x:Name="TranscriptList" ItemsSource="{Binding TranscriptItems}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <EUILib:TranscriptCell 
       Title="{Binding ActTitle}" 
       HostO="{Binding Host}" 
      /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

중단 점 끝없이 트리거되고있다. 바인드 된 소스는 테스트 할 때 정확히 2 개 항목의 목록을 제공하며 정확히 2임을 확인합니다. 여전히 OnApplyTemplate() 메서드는 끝없이 호출됩니다. 왜 이런 일이 일어나는 걸까요?

EDIT : 중단 점을 단계별로 따라 한 후 목록의 각 항목에 대해 초기화되는 항목이 2 개이므로 OnApplyTemplate()이 인스턴스마다 반복해서 호출되고있는 것 같습니다. 즉, 메소드가 instance1::OnApplyTemplate(), 그 다음에 instance2::OnApplyTemplate(), 그 다음에 instnace1::OnApplyTemplate() ... 등으로 불리워진다.

답변

2

중단 점을 제거하고 System.Diagnostics.Debug.WriteLine()을 통해 필요한 디버그 출력을 추가하십시오.
중단 점을 벗어나면 UpdateLayout을 호출 할 가능성이 있습니다. (다른 시나리오에서는이 문제가 여러 번 일어난다는 것을 알았습니다.)

빠른 테스트로서,이 방법으로 침입하지 않으면 여전히 테스트가 진행됩니까?

+0

예 그래도 가능합니다. 그것은 실제로 내 코드의 버그로 인해 ListBox의 DataContext를 지속적으로 업데이트했기 때문에 발생합니다. 그래서, 사실 그것은 약간의 오해입니다. 나는 당신에게 내 질문에 대답하는 데 시간을내어 upvote 줄테니까,하지만 나는 대답으로 표시 할 수 없다고 생각합니다. (어쨌든 당신은 어떤 담당자도 필요하지 않습니다 :)). 질문에 대답하기 위해 시간을내어 주셔서 감사합니다 :) –

관련 문제