每一次我想我都开始了解WPF的工作方式,它正在做某事(或不做某事),我也不明白为什么。愿你能有所启迪。
我想在屏幕上放置一些数字,这些数字应该用Border
包围,而完整的Border
应该有彩色背景(不仅仅是{{ 1}}包含数字。)
所以我做了这样的事情:
TextBlock
但是,尽管我将<ListBox ItemsSource="{Binding Numbers}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="3" Columns="4" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderThickness="1" BorderBrush="Black">
<TextBlock Text="{Binding .}" />
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
和HorizontalAlignment
声明为VerticalAlignment
,但边框(以及示例中未包括的背景)仅覆盖了{{1} },而不是Stretch
的完整单元格。
我在这里想念东西吗?
答案 0 :(得分:1)
这是因为默认情况下,列表框项目的内容演示者不会拉伸。 因此,您必须将此添加到您的列表框:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>