他の回答が回答としてマークされている理由は少し混乱しています。問題は、ヘッダーコンテナーが拡張されていないことです(WPFビジュアルツリーをスキャンすると、拡張されていContentPresenter
ないStretch
ことがわかりますCenter
。代わりに拡張されています)。
ヘッダーに表示されるコンテンツがすべてのヘッダースペースを占めるようにヘッダーを拡大する場合は、GridViewColumnHeader
スタイルをオーバーライドする必要があります。
<ListView HorizontalContentAlignment="Stretch" ...>
<ListView.Resources>
<Style x:Key="StretchedHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Width="200" HeaderContainerStyle="{StaticResource StretchedHeaderStyle}" DisplayMemberBinding="{Binding Path=SomeValue, Mode=OneWay"/>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
上記のコードサンプルは、コンテナにまで及ぶリストビューを生成します。静的リソースヘッダーストレッチスタイルがあります(この場合、ストレッチする各列に適用する必要があります。とを削除してx:Key
、HeaderContainerStyle=
すべてのヘッダーをストレッチします)。また、すべての列セルにストレッチスタイルをグローバルに適用します(ヘッダースタイルの表示方法と同様に、必要に応じて個々の列に適用できます)。
コードビハインドでこれを行う必要がある場合は、スタイルを作成し、列(HeaderContainerStyle
)に適切なスタイルプロパティを設定するだけです。
アップデート
ヘッダースタイルをグローバルに適用するためのはるかに優れた方法があることに気づきました。タイプ適用スタイルをリソースとして宣言する代わりにListView
、スタイルをに直接適用する方がはるかに優れていますGridView
。
<ListView HorizontalContentAlignment="Stretch" ...>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridView.ColumnHeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</GridView.ColumnHeaderContainerStyle>
<GridView.Columns>
<GridViewColumn Width="200" DisplayMemberBinding="{Binding Path=SomeValue, Mode=OneWay"/>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
どちらの方法でも同じ結果が得られますが、上記のこの方法は、ヘッダーコンテナのスタイルを直接担当するstyleプロパティを割り当てるため、はるかにクリーンなアプローチです。ただし、特定の列のみを拡大する必要がある場合は、最初の方法が最善の策です。