我有一个名为'TranscriptCell'的自定义Windows Phone 7控件。我已经添加了一些DependencyPropetys,它工作得非常好。我在void override OnApplyTemplate()
方法中添加了断点,在我的XAML文件中,我使用这样的控件:
<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()
方法被无休止地调用。为什么会这样?
编辑:从断点开始逐步执行后,似乎由于为列表中的每个项目初始化了2个项目,因此每次都会一次又一次地调用OnApplyTemplate()
实例。即,这些方法被称为instance1::OnApplyTemplate()
,然后是instance2::OnApplyTemplate()
,然后是instnace1::OnApplyTemplate()
......等等,无休止地等等。
答案 0 :(得分:2)
删除断点并通过System.Diagnostics.Debug.WriteLine()
添加所需的调试输出
退出断点可能会触发对UpdateLayout的调用。 (我在其他场景中看到过这种情况很多次。)
作为一个快速测试,当你没有进入那种方法时,它仍然会这样做吗?