【问题标题】:WPF - Why Listbox items do not fill uniformgridWPF - 为什么列表框项目不填充uniformgrid
【发布时间】:2008-12-30 07:21:58
【问题描述】:

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

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

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

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

有什么想法吗? 马尔科姆

【问题讨论】:

标签: wpf listbox itemspaneltemplate


【解决方案1】:

在 LISTBOX 而不是数据模板上将 Horizo​​ntalContentAligment 和 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 是实现相同效果的更优雅的方式。

    【讨论】:

      猜你喜欢
      • 2019-06-05
      • 2013-02-10
      • 2014-03-03
      • 2011-04-03
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多