1

我想知道为什么在 ListBox 中使用 ListBoxItem?我发现当我进行数据绑定时,你不需要 ListBoxItem,在某些情况下,我发现没有它它会更好。

原因是什么?它只是用于硬编码的东西吗?

4

1 回答 1

0

即使你不使用ListBoxItem(你是对的,没有太多理由使用它来定义项目),ListBox控件仍然使用它。即,它使用它来包装列表中每个项目的数据模板。有一次您可能有机会在 XAML 代码中引用它,是在设置项目容器样式时——您可以使用以下方式完成ItemContainerStyle

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

上面是一个常见的示例,因为如果您希望 ListBox 中的项目水平伸展,则必须使用该方法。(将项目 DataTemplate 设置为自行拉伸是行不通的,因为默认情况下包含的 ListBoxItem 是左对齐的。)


这是一个完整的例子。

    <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 回答