DataGrid 選択行のデザインを変更 | 野良エンジニアの足跡

DataGrid 選択行のデザインを変更

こんにちは、nagino です。


最近 WPF での開発を続けているのですが、DataGrid の情報が少なくて四苦八苦しています。

また、ASP.NET の GridView の RowDataBound イベントなどで可変数のコントロールを追加するなど様々なカスタマイズを行っていたのですが、WPF の DataGrid はイベントやデザインの感覚が全く異なるので困難です。


● とりあえず最近嵌っていたネタ:選択行の背景色

DataGrid のプロパティにある Background や Foreground で色は変更できるのですが、SelectedColor のようなプロパティが無いため選択行の色が変えられません。

私の環境では濃紺になるため、視認性やデザインから変更したかったのですが、情報が無く試行錯誤していたら、以下の設定でとりあえず変更できました。


<Window ... xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit " ...>

<Window.Resources>

...

<Style TragetType='{x:Type my:DataGridCell}'>

<Style.Triggers>

<Trigger Property='IsSelected' Value='True'>

<Setter Property='Background' Value='#FFFF99' />

<Setter Property='BorderBrush' Value='#FFCC66' />

</Trigger>

</Style.Triggers>

</Style>

</Window.Resources>

...

<my:DataGrid ...>

...

</my:DataGrid>

...

</Window>


スタイルで設定してしまうということです。

セル単位で設定していますが、行単位でできるかどうかは未確認です。

1 つの Window に複数の DataGrid があってそれぞれで設定を変える場合はもう 1 手間必要ですが、とりあえずこれで動くので、時間ができたときにでも確認しようかと思います。


WPF での開発は初の上に時間に追われる状態なので、Dependency Property、Binding、Style といったところを理解する余裕が無く行き当たりばったりで進めているので、かなり厳しいです。

ネットに情報があるにはあるのですが、どうも欲しい情報とずれているようでしっくり来ない感じがしています。

このあたり、うまく分析できれば良いのですが・・・。