1

なぜ ListBox 内で ListBoxItem を使用するのか疑問に思っています。データバインディングを行っているときに、ListBoxItem が必要ないことがわかりました。場合によっては、それがなくてもうまく機能することがわかりました。

その理由は何ですか?ハードコードされたものだけですか?

4

1 に答える 1

0

を使用しなくてもListBoxItem(そのとおりです。項目を定義するために使用する理由はあまりありません)、ListBoxコントロールは引き続きそれを使用します。つまり、リスト内の各項目のデータ テンプレートをラップするために使用します。XAML コードでこれを参照する機会が 1 度あるのは、アイテム コンテナーのスタイルを設定するときですItemContainerStyle

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListBox.ItemContainerStyle>

上記は一般的な例です。ListBox 内の項目を水平方向に引き伸ばしたい場合は、その方法を使用する必要があるためです。(含まれている ListBoxItem はデフォルトで左揃えであるため、項目 DataTemplate を Stretch に設定するだけでは機能しません。)


これが完全な例です。

    <ListBox ItemsSource="{Binding Letters}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Background="Green">
                    <TextBlock Text="{Binding}"  Foreground="White" />
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
        <!-- 
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            </Style>
        </ListBox.ItemContainerStyle>
        -->
    </ListBox>

これは次のように表示されます。

ItemContainerStyle を適用しない場合

のコメントを外すItemContainerStyleと、次のようになります。

ItemContainerStyle を使用

于 2013-10-25T20:44:18.860 に答える