13

次の ListView があるとします。

<ListView ScrollViewer.VerticalScrollBarVisibility="Auto">
  <ListView.View>
    <GridView>
      <GridViewColumn Header="Something" 
                      DisplayMemberBinding="{Binding Path=ShortText}" />
      <GridViewColumn Header="Description"
                      DisplayMemberBinding="{Binding Path=VeryLongTextWithCRs}" />
      <GridViewColumn Header="Something Else" 
                      DisplayMemberBinding="{Binding Path=AnotherShortText}" />
    </GridView>
  </ListView.View>
</ListView>

短いテキスト列は常に画面に収まるようにし、長いテキスト列は残りのスペースを使用し、必要に応じてワードラップを行いたいと考えています。

それは可能ですか?

4

8 に答える 8

7

GridListViewは、列の幅を「*」(残りのスペースを埋める)に設定することをサポートしていないため、これを行う簡単な方法はありません。

これは、IValueConverterを使用して列の幅をTotalListWidth-SumOfColumnWidthsに設定することによって偽造する方法についての説明です

一方、代わりにDataGridの使用を検討しましたか?これは、かなり重いコントロールですが、探している種類のレイアウトをサポートします。また、.NET 4でのみネイティブですが、WPFツールキットを使用して3.5に相当するものを入手できます。

于 2010-05-14T14:50:12.753 に答える
5

Width="Auto"GridViewColumns に設定します。ただし、仮想化により、自動サイズ設定で問題が発生する場合があります。

この質問を参照してください。

要するに、列の正確な自動サイズ設定が必要な場合は、仮想化のために表示されるデータが変更されたときに幅を再計算する必要があります。

于 2010-05-14T14:45:21.293 に答える