読者です 読者をやめる 読者になる 読者になる

たぷつきません

おなかがでてきた。もうたぷついてるやん。

アイコン表示ListView選択カラー解決

 選択時の表示スタイルではなく、単純に色を変えたいだけなので、アイテム選択で使っているシステムカラーを再定義してしまうというやり方でいける。

<ListView.Resources>
    <Color x:Key="SelectionFillColor">#D8C2B7</Color>
    <Color x:Key="SelectionTextColor">#887267</Color>
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
        Color="{StaticResource SelectionFillColor}"/>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
        Color="{StaticResource SelectionFillColor}"/>
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}"
        Color="{StaticResource SelectionTextColor}"/>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
        Color="{StaticResource SelectionTextColor}"/>
</ListView.Resources>

 Highlight... は選択で使われる色、Control... は、非アクティブ時の色。ウィンドウが非アクティブになるたびに色が変わってほしくないので、選択色と同じにしている。もちろんブラシなので凝ったものにも差し替え可能。
 システムカラーはStaticなので一見混乱するが、上記の記述であればローカルで対象としているListView内にしか影響はしない。Staticなリソースを参照しているので一見混乱するが、SystemColors.HighlightBrushKey自体を書き換えているのではなく、リソースのDictionaryに「SystemColors.HighlightBrushKey」をキーとして違うブラスを登録しているだけだから。

参考
http://stackoverflow.com/questions/382006/wpf-listview-inactive-selection-color