c# - GridViewRowPresenter mouse hover trigger style override -


i'm working on application uses gridview inside listview control.

i'm trying change blue hover/click effect on selected row , far haven't been able whatever tried (and tried lot of things)

related xaml app.xaml:

<style x:key="{x:type listview}" targettype="listview">     <setter property="borderthickness" value="0" /> </style>  <style targettype="{x:type gridviewrowpresenter}">     <style.triggers>         <trigger property="ismouseover" value="true">             <setter property="height" value="20" /> <!-- works here, can't change background -->         </trigger>     </style.triggers> </style> 

xaml listview code:

<listview horizontalalignment="left" height="668" verticalalignment="top" width="700" foreground="#bdbdbd" background="#090909" name="results">     <listview.itemcontainerstyle>         <style targettype="listviewitem">             <setter property="horizontalcontentalignment" value="center"/>         </style>     </listview.itemcontainerstyle>     <listview.view>         <gridview allowscolumnreorder="false">             <gridviewcolumn header="id" displaymemberbinding="{binding id}" width="130"/>             <gridviewcolumn header="name" displaymemberbinding="{binding name}" width="220"/>             <gridviewcolumn header="details" displaymemberbinding="{binding details}" width="120"/>         </gridview>     </listview.view> </listview> 

i learn how change hover color in gridview's template.. , i've looked everywhere, no luck.. ps. i'm on windows 7, same thing on windows 8 well.

it's not clear why first approach doesn't work (it must, property setting?), anyway here working one

<listview ...>     <listview.itemcontainerstyle>         <style targettype="listviewitem">             <style.triggers>                 <trigger property="ismouseover"                          value="true">                     <setter property="background"                             value="red" />                 </trigger>             </style.triggers>         </style>     </listview.itemcontainerstyle> </listview> 

you may want deal with isselected distinguish selected , not selected highlight color. may want use multidatatrigger, e.g. below example remove highlight (only border still) selected item:

<multidatatrigger>     <multidatatrigger.conditions>         <condition binding="{binding ismouseover, relativesource={relativesource self}}"                    value="true" />         <condition binding="{binding isselected, relativesource={relativesource self}}"                    value="false" />     </multidatatrigger.conditions>     <setter property="background"             value="transparent" /> </multidatatrigger> 

Comments