我有一个列表框,其中 ItemsPanelTemplate 设置为 UniformGrid,rows= 6 和 cols= 7。
我希望列表框项目填满它们的空间。
我正在使用字典中定义的数据模板。
我的模板的外部控件是一个 Border 与 HorizontalAlignment=Stretch 和 VerticalAlignent=Strectch 但模板不填充列表框项目空间?
有任何想法吗?马尔科姆
我有一个列表框,其中 ItemsPanelTemplate 设置为 UniformGrid,rows= 6 和 cols= 7。
我希望列表框项目填满它们的空间。
我正在使用字典中定义的数据模板。
我的模板的外部控件是一个 Border 与 HorizontalAlignment=Stretch 和 VerticalAlignent=Strectch 但模板不填充列表框项目空间?
有任何想法吗?马尔科姆
将 HorizontalContentAligment 和 VerticalContentAlignment 设置为在 LISTBOX 而不是数据模板上拉伸的答案。
已编辑:添加了其他信息,并回答了问题。
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 是实现相同效果的更优雅的方式。