i cannot figure out how this, , 1 think pretty simple.
i have menuitem
that's part of contextmenu
. have binding
boolean property on viewmodel. depending on state of property, want menuitem
's header text , icon change.
i use ivalueconverter
this, i'm sure there more elegant solution using datatemplate
, triggers. can't figure out proper markup.
the code worked (snipped below) has 2 problems: 1 headertemplate
doesn't appear contain icon, menuitems
's text contains icon (normally icon appears on in left hand section - see image , compare copy , clear menuitems). additionally, clicking menuitem
doesn't trigger datatemplate
changes (note command works, viewmodel binding in fact toggle true/false state).
<contextmenu> <menuitem command="{binding source={x:static cmd:commands.pausecommand}}" commandparameter="{binding}"> <menuitem.headertemplate> <datatemplate> <stackpanel orientation="horizontal"> <image x:name="img" source="../icons/pause.png"/> <textblock x:name="txt" text="pause"/> </stackpanel> <datatemplate.triggers> <datatrigger binding="{binding ispaused}" value="true" > <setter property="image.source" value="../icons/play.png" targetname="img"/> <setter property="text" value="play" targetname="txt"/> </datatrigger> </datatemplate.triggers> </datatemplate> </menuitem.headertemplate> </menuitem>
you mean this? dont make things harder ;)
<contextmenu> <menuitem command="{binding source={x:static cmd:commands.pausecommand}}" commandparameter="{binding}"> <menuitem.style> <style targettype="menuitem"> <setter property="icon" value="../icons/play.png>"></setter> <style.triggers> <datatrigger binding="{binding ispaused, mode=oneway}" value="true"> <setter property="icon" value="../icons/pause.png"></setter> </datatrigger> </style.triggers> </style> </menuitem.style> </menuitem> </contextmenu>
Comments
Post a Comment