私はWindows Phone 7のカスタムコントロール「TranscriptCell」を持っています。私はそれにいくつかのDependencyPropetysを追加しました。これは完璧に動作します。私はvoid override OnApplyTemplate()
メソッドにブレークポイントを追加した、と私のXAMLファイルで、私はこのようなコントロールを使用する場合:DataTemplateでOnApplyTemplateが無期限に呼び出されています
<EUILib:TranscriptCell Title="Hello World" HostO="MSI India" />
ブレークポイントは、正確に一度トリガされると、すなわち方法void OnApplyTemplate()
は1回だけ呼び出されます。私はような何かが
、:
<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()
...などと無限に続きます。
はい、それはまだありません。これは、私が実際に私のコードのバグのためにListBoxのDataContextを常に更新していたためです。だから、それは実際には少し誤解です。私はあなたに私の質問に答えるために時間をとってupvoteを与えるでしょうが、私は答えとしてマークすることはできませんね(とにかくあなたはどんな代理人も必要としません:))。質問に答える時間をとってくれてありがとう:) –