1

Metro アプリに次のコードがあります。リストビューは、オブジェクトのリストにバインドします。私の問題は、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ではなく、同じサイズにするListViewItem/ItemContainerStyleによるListView自体だと思います。私は本当にそれに対する回避策があるとは思わない。独自の ItemsControl とカスタム パネルを使用するか、各アイテムの目的のサイズを計算し、それに基づいて、目的のサイズに一致するように RowSpan/ColumnSpan を適切に設定して、VariableSizedWrapGrid のようなものにアイテムを配置できます。それ以外に、すべての項目をすべて収まるように十分な幅にするか、単にコンテンツをクリップして、ユーザーが項目をクリックすると詳細ビューに完全な文字列を表示することができます。

于 2012-09-07T04:07:59.103 に答える