我有一个列表框,其ItemsPanelTemplate设置为UniformGrid,行数= 6,cols = 7.
我希望列表框项目填满他们的空间。
我正在使用字典中定义的数据完成。
我的模板的外部控件是一个带有HorizontalAlignment = Stretch的边框 和VerticalAlignent = Strectch但模板没有填充列表框项空间?
有什么想法吗? 马尔科姆
答案 0 :(得分:10)
答案是在LISTBOX而不是datatemplate上将HorizontalContentAligment和VerticalContentAlignment设置为Stretch。
答案 1 :(得分:2)
已编辑:已添加其他信息,并回复了问题。
让ListBoxItems
与其他项目保持一致的有趣方法是Grid
DataTemplate
共享范围功能
示例:
<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是一种更优雅的方法来实现相同的效果。