我有一个列表框,其中ItemsPanelTemplate设置为UniformGrid,行数为6,列数为7。
我希望列表框中的项填充其空间。
我在字典中定义了一个数据模板。
我的模板外部控件是一个边框,水平对齐方式为Stretch,垂直对齐方式也为Stretch,但是模板不能填充列表框项的空间?
有什么想法吗? Malcolm
我有一个列表框,其中ItemsPanelTemplate设置为UniformGrid,行数为6,列数为7。
我希望列表框中的项填充其空间。
我在字典中定义了一个数据模板。
我的模板外部控件是一个边框,水平对齐方式为Stretch,垂直对齐方式也为Stretch,但是模板不能填充列表框项的空间?
有什么想法吗? Malcolm
解决方法是将水平对齐属性HorizontalContentAlignment和垂直对齐属性VerticalContentAlignment设置为Stretch,应用于LISTBOX而不是数据模板。
编辑:添加了额外的信息,并回答了问题。
使ListBoxItems
与其他项目保持一致的有趣方法是在您的DataTemplate
中使用Grid
的共享作用域功能。
示例:
<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
都将是相同的大小。如果没有设置特定的宽度/高度,子项应填充所有可用空间。