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
Post a Comment