1

我在 Metro 应用程序中有以下代码。listview 绑定到一个对象列表。我的问题是 WrapGrid 为它们分配了相等的宽度。但是有些标题比其他标题长,所以宽度应该设置为自动。但这不起作用..有人知道吗?

<ListView>
  <ListView.ItemTemplate>
      <DataTemplate>
      <StackPanel Orientation="Horizontal" >
              <TextBlock Text="{Binding Title}"/>
          </StackPanel>
      </DataTemplate>
  </ListView.ItemTemplate>
  <ListView.ItemsPanel>
      <ItemsPanelTemplate>
          <WrapGrid Orientation="Horizontal" />
      </ItemsPanelTemplate>
  </ListView.ItemsPanel>
</ListView>
4

2 回答 2

2

这对我有用:

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapGrid ItemWidth="250" ItemHeight="80" MaximumRowsOrColumns="7" VerticalAlignment="Center" HorizontalAlignment="Center" />
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

这里的关键点是 MaximumRowsOrColumns 属性。玩得开心 :)

于 2012-09-12T12:25:17.263 回答
1

我认为这不是 WrapGrid,而是 ListView 本身通过 ListViewItem/ItemContainerStyle 使它们具有相同的大小。我不认为真的有解决方法。您可以使用自己的 ItemsControl 和自定义面板或计算每个项目的所需大小并基于此 - 将项目放在 VariableSizedWrapGrid 之类的东西中,适当地设置 RowSpan/ColumnSpan 以匹配所需的大小。除此之外 - 您可以使所有项目足够宽以适合所有内容,或者只需剪辑内容并在用户单击项目后在详细视图中显示完整字符串。

于 2012-09-07T04:07:59.103 回答