wpf - Is it possible to reference control templates defined in microsoft's assemblies? -
i have scenario have provide own control template few wpf controls - i.e. gridviewheader. when take @ control template gridviewheader in blend, agregated several other controls, in cases styled control - i.e. splitter between columns. templates, resources hidden somewhere in system...dll (or somewhwere in themes dll's). so, question - there way reference predefined templates? far, i've ended having own copies of them in resources, don't approach.
here sample scenario: have gridviewcolumnheader:
<style targettype="{x:type gridviewcolumnheader}" x:key="gridviewcolumnstyle"> <setter property="horizontalcontentalignment" value="stretch"/> <setter property="verticalcontentalignment" value="stretch"/> <setter property="background" value="{staticresource gridviewheaderbackgroundcolor}"/> <setter property="borderbrush" value="{staticresource gridviewheaderforegroundcolor}"/> <setter property="borderthickness" value="0"/> <setter property="padding" value="2,0,2,0"/> <setter property="foreground" value="{staticresource gridviewheaderforegroundcolor}"/> <setter property="template"> <setter.value> <controltemplate targettype="{x:type gridviewcolumnheader}"> <grid snapstodevicepixels="true" tag="header" name="header"> <contentpresenter name="headercontent" margin="0,0,0,1" verticalalignment="{templatebinding verticalcontentalignment}" horizontalalignment="{templatebinding horizontalcontentalignment}" recognizesaccesskey="true" snapstodevicepixels="{templatebinding snapstodevicepixels}" /> <canvas> <thumb x:name="part_headergripper" style="{staticresource gridviewcolumnheadergripper}"/> </canvas> </grid> <controltemplate.triggers> <trigger property="ismouseover" value="true"> </trigger> <trigger property="ispressed" value="true"> <setter targetname="headercontent" property="margin" value="1,1,0,0"/> </trigger> <trigger property="height" value="auto"> <setter property="minheight" value="20"/> </trigger> <trigger property="isenabled" value="false"> <setter property="foreground" value="{dynamicresource {x:static systemcolors.graytextbrushkey}}"/> </trigger> </controltemplate.triggers> </controltemplate> </setter.value> </setter> </style>
so far - nothing interesting, say, want add functionality straight in template - i'd leave cotnent presenter is, add controls next , i'd leave thumb defaults framework. i've found themes provided microsoft here:
the theme thumb looks that:
<style x:key="gridviewcolumnheadergripper" targettype="{x:type thumb}"> <setter property="canvas.right" value="-9"/> <setter property="width" value="18"/> <setter property="height" value="{binding path=actualheight,relativesource={relativesource templatedparent}}"/> <setter property="padding" value="0"/> <setter property="background" value="{staticresource gridviewcolumnheaderborderbackground}"/> <setter property="template"> <setter.value> <controltemplate targettype="{x:type thumb}"> <border padding="{templatebinding padding}" background="transparent"> <rectangle horizontalalignment="center" width="1" fill="{templatebinding background}"/> </border> </controltemplate> </setter.value> </setter> </style>
so far - have copy & paste style, while i'd prefer reference resources.
referencing internal resources 100% subject change isn't serviceable - better copy it.
Comments
Post a Comment