c# - WPF treeview item background over entire row -


i writing 1 app , need set background under entire row items. found inspiration in here cannot idea how border background value in template (the problem bit more complicated:)

my problem in treeview 2 types of "data" (files , folders). user can modify background under files , folders.

right have background on textblock, seems horrible , want have background on entire row (i think looks better).

now seems so:
img1

but need is:
img2

if change value of border background, change items (logically). guess need work textblock background, cannot reach spreading on entire row (stretch not solution, because spread end of line not white space before).

thanks advice.

edit : xaml in here:

<resourcedictionary     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:local="clr-namespace:treeview"> <!-- treeview  -->     <style x:key="expandcollapsetogglestyle" targettype="togglebutton">         <setter property="focusable" value="false"/>         <setter property="template">             <setter.value>                 <controltemplate targettype="togglebutton">                     <grid           width="15"           height="13"           background="transparent">                         <!--<path x:name="expandpath"             horizontalalignment="left"              verticalalignment="center"              margin="1,1,1,1"             fill="red"             data="m 4 0 l 8 4 l 4 8 z"/>-->                     </grid>                     <controltemplate.triggers>                         <trigger property="ischecked"                value="true">                             <!--<setter property="data"                 targetname="expandpath"                 value="m 0 4 l 8 4 l 4 8 z"/>-->                         </trigger>                     </controltemplate.triggers>                 </controltemplate>             </setter.value>         </setter>     </style>     <style x:key="treeviewitemfocusvisual">         <setter property="control.template">             <setter.value>                 <controltemplate>                     <border>                         <rectangle margin="0,0,0,0"                  strokethickness="5"                  stroke="black"                  strokedasharray="1 2"                  opacity="0"/>                     </border>                 </controltemplate>             </setter.value>         </setter>     </style>       <style x:key="{x:type treeviewitem}" targettype="{x:type treeviewitem}">         <setter property="background" value="transparent"/>         <setter property="horizontalcontentalignment" value="{binding path=horizontalcontentalignment, relativesource={relativesource ancestortype={x:type itemscontrol}}}"/>         <setter property="verticalcontentalignment" value="{binding path=verticalcontentalignment, relativesource={relativesource ancestortype={x:type itemscontrol}}}"/>         <setter property="padding" value="1,0,0,0"/>         <setter property="foreground" value="{dynamicresource {x:static systemcolors.controltextbrushkey}}"/>         <setter property="focusvisualstyle" value="{staticresource treeviewitemfocusvisual}"/>         <setter property="template">             <setter.value>                 <controltemplate targettype="{x:type treeviewitem}">                     <controltemplate.resources>                         <local:leftmarginmultiplierconverter length="19" x:key="lengthconverter" />                     </controltemplate.resources>                     <stackpanel>                         <border x:name="bd"                           background="{templatebinding background}"                           borderbrush="{templatebinding borderbrush}"                           borderthickness="{templatebinding borderthickness}"                           padding="{templatebinding padding}">                             <grid margin="{binding converter={staticresource lengthconverter}, relativesource={relativesource templatedparent}}">                                 <grid.columndefinitions>                                     <columndefinition width="19" />                                     <columndefinition/>                                 </grid.columndefinitions>                                 <togglebutton grid.column="1" x:name="expander"                                   style="{staticresource expandcollapsetogglestyle}"                                   ischecked="{binding path=isexpanded,                                               relativesource={relativesource templatedparent}}"                                   clickmode="press"/>                                 <contentpresenter x:name="part_header" grid.column="1" verticalalignment="stretch" horizontalalignment="stretch" contentsource="header" />                             </grid>                         </border>                         <itemspresenter x:name="itemshost" />                     </stackpanel>                     <controltemplate.triggers>                         <trigger property="isexpanded" value="false">                             <setter targetname="itemshost" property="visibility" value="collapsed"/>                         </trigger>                         <trigger property="hasitems" value="false">                             <setter targetname="expander" property="visibility" value="hidden"/>                         </trigger>                         <multitrigger>                             <multitrigger.conditions>                                 <condition property="hasheader" value="false"/>                                 <condition property="width" value="auto"/>                             </multitrigger.conditions>                             <setter targetname="part_header" property="minwidth" value="75"/>                         </multitrigger>                         <multitrigger>                             <multitrigger.conditions>                                 <condition property="hasheader" value="false"/>                                 <condition property="height" value="auto"/>                             </multitrigger.conditions>                             <setter targetname="part_header" property="minheight" value="19"/>                         </multitrigger>                         <trigger property="isselected" value="true">                             <setter targetname="bd" property="background" value="{dynamicresource {x:static systemcolors.highlightbrushkey}}"/>                             <setter property="foreground" value="{dynamicresource {x:static systemcolors.highlighttextbrushkey}}"/>                         </trigger>                         <multitrigger>                             <multitrigger.conditions>                                 <condition property="isselected" value="true"/>                                 <condition property="isselectionactive" value="false"/>                             </multitrigger.conditions>                             <setter targetname="bd" property="background" value="{dynamicresource {x:static systemcolors.controlbrushkey}}"/>                             <setter property="foreground" value="{dynamicresource {x:static systemcolors.controltextbrushkey}}"/>                         </multitrigger>                         <trigger property="isenabled" value="false">                             <setter property="foreground" value="{dynamicresource {x:static systemcolors.graytextbrushkey}}"/>                         </trigger>                     </controltemplate.triggers>                 </controltemplate>             </setter.value>         </setter>     </style> </resourcedictionary> 

use snoop understand visual tree trying modify. way take 2-3 minutes know need modify. ( google )

my bet need use this:

<treeview> <treeview.itemcontainerstyle> <style basedon="{staticresource {x:type treeviewitem}}" targettype="treeviewitem">                     <setter property="background" value="purple" /> </treeview.itemcontainerstyle> </treeview> 

you need add triggers if want background colo depending on items.


Comments

Popular posts from this blog

asp.net mvc 3 - Using mvc3, I need to add a username/password to the sql connection string at runtime -

kineticjs - draw multiple lines and delete individual line -

thumbnails - jQuery image rotate on hover -