代替テキスト http://akashkava.com/blog/wp-content/uploads/2009/12/ListBoxItem-Selection-Problem.png
次のコードは、少し奇妙な動作をします。
<ListBox SelectionMode="Multiple">
<StackPanel>
<TextBlock>Selection is Black</TextBlock>
</StackPanel>
<ListBoxItem>
<StackPanel>
<TextBlock>Selection is White</TextBlock>
</StackPanel>
</ListBoxItem>
</ListBox>
最初の選択は黒色のままであることに注意してください。これは、Item が独自の ItemContainer ではないためですが、2 番目のケースでは Item が独自の ItemContainer であるため、スタイルは正しく機能します。ほとんどの場合、テンプレートを介してデータを取り込みますが、Item は独自の ItemContainer ではないため、TextBlock は前景色に関して奇妙な動作をします。
重要: 解決方法ではなく、「なぜこれが起こるのか」に対する答えを探しています。回避策 TextElement.Foreground="{TemplateBinding Foreground}" は知っていますが、なぜこれが起こっているのか知りたいです。