4

我有一个列表框,其中 ItemsPanelTemplate 设置为 UniformGrid,rows= 6 和 cols= 7。

我希望列表框项目填满它们的空间。

我正在使用字典中定义的数据模板。

我的模板的外部控件是一个 Border 与 Horizo​​ntalAlignment=Stretch 和 VerticalAlignent=Strectch 但模板不填充列表框项目空间?

有任何想法吗?马尔科姆

4

2 回答 2

12

将 Horizo​​ntalContentAligment 和 VerticalContentAlignment 设置为在 LISTBOX 而不是数据模板上拉伸的答案。

于 2009-01-03T12:01:39.737 回答
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 是实现相同效果的更优雅的方式。

于 2008-12-30T08:11:31.523 回答