ほとんどの場合、ListBox は次のように表示されます。
しかし、ときどき次のようになります。
何がうまくいかないのか考えていますか?
- 編集 -
コントロールテンプレートを質問から削除しました。プログラムからコントロールテンプレートを削除しても問題が残っていたためです。これは WPF のバグですか?
ほとんどの場合、ListBox は次のように表示されます。
しかし、ときどき次のようになります。
何がうまくいかないのか考えていますか?
- 編集 -
コントロールテンプレートを質問から削除しました。プログラムからコントロールテンプレートを削除しても問題が残っていたためです。これは WPF のバグですか?
私はほとんど同じ問題を抱えていました。私の質問を参照してください。本当の答えは見つかりませんでした。私が最近やっていることは、リストボックステンプレートからスクロールビューアーを取り除き、リストボックス自体全体を新しいスクロールビューアーに埋め込むことです。すべての状況でうまくいくわけではありませんが、それでも巧妙なトリックです。
xaml は次のようになります。
<ScrollViewer>
<ListBox>
<!--strip default presenter-->
<ItemsControl.Template>
<ControlTemplate>
<ItemsPresenter />
</ControlTemplate>
</ItemsControl.Template>
<ListBox.ItemTemplate>
<DataTemplate>
<!--data template goes here-->
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
私は巨大な xaml ウィザードではないので、誰かがこれを再利用可能なコードに変換できる場合は、ぜひそうしてください。
ListBox 項目の境界線に SnapsToDevicePixels="True" を設定してみましたか? 太さが1なので「デバイス独立単位」で境界線がピクセル境界に落ちていると考えています。