WPF の ListView で、列(セル)の中身を(下図のように)中央揃えにしたいと思った(デフォルトは左揃え)。
ところが CheckBox の HorizontalAlignment を Center に設定しても中央揃えにならなかったので、ネット検索して調査した。
すると・・・
- ListView の 1 列目は左揃えにしかできない
- 1 列目を非表示にして 2 列目から使用するのが手っ取り早い
- Win32 API を使えば・・・
という記事が目についたので、ちょっとあきらめかけた。
が、
引き続き調べていたら、どうやらこれは WPF の話ではなく、Forms の ListView の話らしい。
WPF と Forms のコントロールは名前が同じで挙動が似ているものが多いけれど、実際は挙動が異なるものが多いので紛らわしいんだよね・・・。(この紛らわしさ、何とかならんかったんかい)
しかも今回のケースでは、WPF の ListView も、デフォルトでは列(セル)に指定したアラインメントが適用されないので、Forms の ListView の件と間違いやすい(そんなことない?)。
結論を言うと、WPF の ListView の列(セル)にアラインメントを適用するには、その前準備として(ListView に対して)下記の定義が必要とのことです。
<ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <!-- ListView の列(セル)に左揃え・中央揃え・右揃えを設定するのに必要な定義 --> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> </Style> </ListView.ItemContainerStyle>
WPF の ListView の場合、これで、各列(セル)に設定したアラインメントが効くようになります。