wpf - BInding from Template within a Style -


i'm trying work out controltemplate.triggers in style below, , haven't figured out how find named ellipse , path properties.

for example, when ismouseover, change background of ellipse. way find ellipse can set fill property way have set style? there better way lay out?

cheers,
berryl

<style x:key="closecrosstogglebuttonstyle" targettype="{x:type togglebutton}">  <setter property="contenttemplate">       <setter.value>         <datatemplate>              <grid background="transparent">                  <!-- background of button, ellipse. -->                 <ellipse x:name="theellipse" />                  <!-- path renders cross. -->                 <path x:name="thecross"...              </grid>          </datatemplate>     </setter.value> </setter>  <setter property="template">     <setter.value>         <controltemplate targettype="{x:type togglebutton}">             <contentpresenter x:name="thecontent"/>             <controltemplate.triggers>                 <trigger property="ismouseover" value="true">                     <setter property="ellipse.fill" value="{staticresource hoverbackgroundbrush}" />                     <setter property="path.stroke" value="{staticresource hoverforegroundbrush}"/>                 </trigger>             </controltemplate.triggers>         </controltemplate>     </setter.value> </setter> 

ok, working

 <setter property="template">     <setter.value>         <controltemplate targettype="{x:type togglebutton}">             <grid background="transparent">                 <!-- background of button, ellipse. -->                 <ellipse x:name="theellipse" />                 <!-- path renders cross. -->                 <path x:name="thecross"                       ...                 </path>              </grid>             <controltemplate.triggers>                 <trigger property="ismouseover" value="true">                     <setter targetname="theellipse" property="fill" value="{staticresource hoverbackgroundbrush}" />                     <setter targetname="thecross" property="stroke" value="{staticresource hoverforegroundbrush}"/>                 </trigger>                 <trigger property="isenabled" value="false">                     <setter property="visibility" value="collapsed"/>                 </trigger>                 <trigger property="ispressed" value="true">                     <setter targetname="theellipse" property="fill" value="{staticresource pressedbackgroundbrush}" />                     <setter targetname="theellipse" property="stroke" value="{staticresource pressedborderbrush}" />                     <setter targetname="thecross" property="stroke" value="{staticresource pressedforegroundbrush}"/>                 </trigger>             </controltemplate.triggers>         </controltemplate>     </setter.value> </setter> 

in controltemplate.triggers can manipulate controls inside contenttemplate, not have access elements contenttemplate out of template.

you can example below (i changing button image...):

<setter property="template">     <setter.value>         <controltemplate targettype="{x:type button}">             <grid width="{templatebinding width}" height="{templatebinding height}">                 <image x:name="imgbackground" source="{staticresource uparrowimagenormal}" stretch="none"/>             </grid>             <controltemplate.triggers>                 <trigger property="ispressed" value="true">                     <setter targetname="imgbackground"                             property="source" value="{staticresource uparrowimageispressed}"/>                 </trigger>                 <trigger property="isenabled" value="false">                     <setter targetname="imgbackground" property="source" value="{staticresource uparrowimagedisabled}"/>                 </trigger>             </controltemplate.triggers>         </controltemplate>     </setter.value> </setter> 

unfortunately not know ways apply triggers data template. believe can apply trigger in contentpresenter...

correction, seems can use (sample):

<button x:name="btntest" height="23" width="75"  horizontalalignment="left"  verticalalignment="top" verticalcontentalignment="stretch" horizontalcontentalignment="stretch">             <button.contenttemplate>                 <datatemplate>                     <rectangle x:name="t" fill="azure" verticalalignment="stretch" horizontalalignment="stretch"/>                     <datatemplate.triggers>                         <trigger property="ismouseover" value="true">                             <setter targetname="t" property="fill" value="black"/>                         </trigger>                     </datatemplate.triggers>                 </datatemplate>             </button.contenttemplate>         </button> 

Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c++ - Using OpenSSL in a multi-threaded application -

All overlapping substrings matching a java regex -