我想知道为什么在 ListBox 中使用 ListBoxItem?我发现当我进行数据绑定时,你不需要 ListBoxItem,在某些情况下,我发现没有它它会更好。
原因是什么?它只是用于硬编码的东西吗?
我想知道为什么在 ListBox 中使用 ListBoxItem?我发现当我进行数据绑定时,你不需要 ListBoxItem,在某些情况下,我发现没有它它会更好。
原因是什么?它只是用于硬编码的东西吗?
即使你不使用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
,它显示如下: