Windows phone 7 在DataTemplate中被无限调用的OnApplyTemplate

Windows phone 7 在DataTemplate中被无限调用的OnApplyTemplate,windows-phone-7,Windows Phone 7,我有一个自定义的WindowsPhone7控件,名为“TranscriptCell”。我向它添加了一些DependencyProperty,这非常好。我在void override OnApplyTemplate()方法中添加了一个断点,在我的XAML文件中,我使用如下控件: <EUILib:TranscriptCell Title="Hello World" HostO="MSI India" /> 断点被无休止地触发。当我进行测试时,绑定的源代码提供了一个正好包含2个项目的列表

我有一个自定义的WindowsPhone7控件,名为“TranscriptCell”。我向它添加了一些DependencyProperty,这非常好。我在
void override OnApplyTemplate()
方法中添加了一个断点,在我的XAML文件中,我使用如下控件:

<EUILib:TranscriptCell Title="Hello World" HostO="MSI India" />
断点被无休止地触发。当我进行测试时,绑定的源代码提供了一个正好包含2个项目的列表,并且确认它正好是2个。尽管如此,
OnApplyTemplate()
方法仍被无休止地调用。为什么会这样


编辑:在从断点一步一步地执行操作之后,似乎由于列表中的每个项都有两个已初始化的项,
OnApplyTemplate()
正在为每个实例一次又一次地调用。i、 例如,这些方法的调用方式如下:
instance1::OnApplyTemplate()
,然后是
instance2::OnApplyTemplate()
,然后是
instance1::OnApplyTemplate()
。。。依此类推。

通过
System.Diagnostics.debug.WriteLine()
删除断点并添加所需的调试输出
从断点出来可能会触发对UpdateLayout的调用。(我在其他场景中多次看到这种情况。)


作为一个快速测试,当您不使用该方法时,它是否仍然这样做?

是的,它仍然这样做。之所以这样做,是因为由于代码中的错误,我实际上一直在更新列表框的DataContext。所以,这实际上有点误会。我会投你一票,感谢你花时间回答我的问题,但我想我不能把它作为答案(反正你不需要任何代表:)。非常感谢您抽出时间回答以下问题:)
<ListBox x:Name="TranscriptList" ItemsSource="{Binding TranscriptItems}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <EUILib:TranscriptCell
                Title="{Binding ActTitle}"
                HostO="{Binding Host}"
            />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>