xaml - WPF - Radio button control template binding "IsChecked" not working -


i have control template below, , want ischecked property when user selects radio button.

but when user select radio button "a" it's ischecked property still show false. why?

<controltemplate x:key="radiobtntemplate" targettype="{x:type radiobutton}">    <grid>      <stackpanel margin="5">          <radiobutton name="tempbtn" ischecked="{templatebinding ischecked}" fontfamily="segoe ui" fontsize="18.667" content="{templatebinding content}" groupname="{templatebinding groupname}"/>       </stackpanel>     </grid> </controltemplate> 

and use template:

<radiobutton groupname="cg" x:name="_rdobtna" content="a" template="{dynamicresource radiobtntemplate}" ischecked="true"/> <radiobutton groupname="cg" x:name="_rdobtnb" content="b" template="{dynamicresource radiobtntemplate}" /> <radiobutton groupname="cg" x:name="_rdobtnc" content="c" template="{dynamicresource radiobtntemplate}" /> 

if take example have 2 problems cause problems seeing.

issue 1: firstly design has created six not three <radiobutton> controls. 3 in <stackpanel> , 3 created part of control template. six radio buttons linked part of groupname="cg" group.

as know because belong same cg group 1 of 6 radio buttons can have ischecked property set true. 3 named controls _rdobtna, _rdobtnb , _rdobtnc not visible on screen can never set true (and in case of _rdobtna promptly set false xaml declared true moment template control bound).

to resolve situation, remove groupname="{templatebinding groupname}" control template definition leaving 3 top level radio buttons in group.

issue 2: issue thought root of problem begin with. ischecked={templatebinding ischecked} oneway binding , not update other way. make binding twoway need use long-hand version of binding definition, ischecked="{binding ischecked, relativesource={relativesource templatedparent}, mode=twoway}"

the control template becomes making 2 changes.

<controltemplate x:key="radiobtntemplate" targettype="{x:type radiobutton}">     <grid>         <stackpanel margin="5">             <radiobutton name="tempbtn" ischecked="{binding ischecked, relativesource={relativesource templatedparent}, mode=twoway}" fontfamily="segoe ui" fontsize="18.667" content="{templatebinding content}" />         </stackpanel>     </grid> </controltemplate> 

Comments

Popular posts from this blog

c - Bitwise operation with (signed) enum value -

xslt - Unnest parent nodes by child node -

YouTubePlayerFragment cannot be cast to android.support.v4.app.Fragment -