【问题标题】:WPF - Why Listbox items do not fill uniformgridWPF - 为什么列表框项目不填充uniformgrid
【发布时间】:2008-12-30 07:21:58
【问题描述】:
我有一个列表框,其中 ItemsPanelTemplate 设置为 UniformGrid,rows= 6 和 cols= 7。
我希望列表框项填满它们的空间。
我正在使用字典中定义的数据模板。
我的模板的外部控件是一个 Border,HorizontalAlignment=Stretch
和 VerticalAlignent=Strectch 但模板未填充列表框项目空间?
有什么想法吗?
马尔科姆
【问题讨论】:
标签:
wpf
listbox
itemspaneltemplate
【解决方案1】:
在 LISTBOX 而不是数据模板上将 HorizontalContentAligment 和 VerticalContentAlignment 设置为 Stretch 的答案。
【解决方案2】:
已编辑:添加了其他信息,并回答了问题。
使ListBoxItems 与其他项目一致的一种有趣方法是在DataTemplate 中使用Grids 共享范围功能
例子:
<ItemsControl Grid.IsSharedSizeScope="True" ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="Content"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="{Binding Path=Name}">
</Grid>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
现在所有TextBlocks 在您的布局中都将具有相同的大小。如果未设置特定的宽度/高度,则子项应填充所有可用空间。
或者,您可以将控件的宽度和高度设置为拉伸,但是我认为使用 Grid.SharedScopeSize 是实现相同效果的更优雅的方式。