wpf - Change the color of a Border element in ListBox when item is selected -
i have following itemtemplate defined listbox.
<listbox.itemtemplate> <datatemplate> <grid margin="0 4 0 4"> <grid.columndefinitions> <columndefinition width="auto" sharedsizegroup="grp1" /> <columndefinition width="*" /> <columndefinition width="auto" sharedsizegroup="grp2" /> </grid.columndefinitions> <grid.rowdefinitions> <rowdefinition height="auto" /> <rowdefinition height="auto" /> <rowdefinition height="auto" /> </grid.rowdefinitions> <border borderbrush="black" borderthickness="0 0 0 1" grid.column="0" grid.row="0" grid.columnspan="3"> <textblock text="..." fontsize="16" /> </border> <textblock grid.column="0" grid.row="1" grid.columnspan="3" text="..." /> <stackpanel grid.column="0" grid.row="2" orientation="horizontal"> <textblock grid.column="0" grid.row="2" text="..." /> </stackpanel> </grid> </datatemplate> </listbox.itemtemplate> the thing is, when item selected, textblock's foreground colors change, border's color remains black:
unselected:

selected:

how can change color of border match color of textblocks?
the item selection colors defined in controltemplate listboxitem. container itemtemplate injected colors set time datatemplate being rendered. override need set listbox.itemcontainerstyle new style controltemplate want. simple example below. keep close possible you're seeing now, use option in blend "edit copy" of current template being rendered under current theme. can edit parts want , keep rest of template same.
<style x:key="listboxitembasicstyle" targettype="{x:type listboxitem}"> <setter property="snapstodevicepixels" value="true"/> <setter property="overridesdefaultstyle" value="true"/> <setter property="template"> <setter.value> <controltemplate targettype="{x:type listboxitem}"> <grid snapstodevicepixels="true"> <border x:name="border" background="{templatebinding background}" borderbrush="{templatebinding borderbrush}" borderthickness="{templatebinding borderthickness}"/> <contentpresenter horizontalalignment="{templatebinding horizontalcontentalignment}" verticalalignment="{templatebinding verticalcontentalignment}"/> </grid> <controltemplate.triggers> <!-- change isselected selectedbackgroundbrush set selection color items --> <trigger property="isselected" value="true"> <setter property="background" value="{dynamicresource selectedbackgroundbrush}" targetname="border"/> </trigger> <trigger property="isenabled" value="false"> <setter property="foreground" value="{dynamicresource disabledforegroundbrush}"/> </trigger> </controltemplate.triggers> </controltemplate> </setter.value> </setter> </style>
Comments
Post a Comment