c# - Bool to Visibility Converter in WPF -
i have 3 radio buttons , 3 group boxes , based on selection of radio button, group box should have been visible or collapsed, nothing seems work here. code constructor gets executed, still seems things overlapping each other.
<basecontrols:maintaintemplate style="{staticresource {x:type basecontrols:maintaintemplate}}" titletext="{binding titletext}"> <basecontrols:maintaintemplate.tabsection> <grid> <groupbox> <groupbox.header> <textblock text="case information" style="{staticresource textblockwhite}"/> </groupbox.header> <groupbox.content> <grid x:name="gridmain"> <grid.rowdefinitions> <rowdefinition style="{staticresource autoheightrowdefinition}"/> <rowdefinition style="{staticresource minheightrowdefinition}"/> <rowdefinition style="{staticresource autoheightrowdefinition}"/> <rowdefinition style="{staticresource minheightrowdefinition}"/> <rowdefinition style="{staticresource autoheightrowdefinition}"/> <rowdefinition style="{staticresource minheightrowdefinition}"/> <rowdefinition style="{staticresource maxheightrowdefinition}"/> <rowdefinition style="{staticresource minheightrowdefinition}"/> </grid.rowdefinitions> <grid.columndefinitions> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource maxwidthcolumndefinition}"/> <columndefinition style="{staticresource minwidthcolumndefinition}"/> </grid.columndefinitions> <grid grid.column="1" x:name="gridselectcustomer"> <grid.rowdefinitions> <rowdefinition style="{staticresource minheightrowdefinition}"/> <rowdefinition style="{staticresource autoheightrowdefinition}"/> <rowdefinition style="{staticresource minheightrowdefinition}"/> <rowdefinition style="{staticresource autoheightrowdefinition}"/> </grid.rowdefinitions> <grid.columndefinitions> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> </grid.columndefinitions> <textblock grid.row="1" text="select customer" style="{staticresource textblockwhite}"/> <combobox grid.row="1" grid.column="2" width="150" itemssource="{binding customers}" displaymemberpath="firstname" selectedvalue="{binding selectedcustomer}"/> <button grid.row="1" grid.column="4" content="quick search"/> <button grid.row="1" grid.column="6" content="add new customer"/> <textblock grid.row="3" text="reference no" style="{staticresource textblockwhite}"/> <textbox grid.row="3" grid.column="2"/> <textblock grid.row="3" text="case no" grid.column="4" style="{staticresource textblockwhite}"/> <textbox grid.row="3" grid.column="6" style="{staticresource textboxreadonly}"/> </grid> <groupbox grid.row="2" grid.column="1" x:name="groupboxcustomerinfo"> <groupbox.header> <textblock text="customer details" style="{staticresource textblockwhite}"></textblock> </groupbox.header> <groupbox.content> <grid> <grid.columndefinitions> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> </grid.columndefinitions> <grid.rowdefinitions> <rowdefinition style="{staticresource autoheightrowdefinition}"/> <rowdefinition style="{staticresource minheightrowdefinition}"/> <rowdefinition style="{staticresource autoheightrowdefinition}"/> <rowdefinition style="{staticresource minheightrowdefinition}"/> <rowdefinition style="{staticresource autoheightrowdefinition}"/> </grid.rowdefinitions> <textblock style="{staticresource textblockwhite}" grid.row="0" grid.column="1" text="name"/> <textbox style="{staticresource textboxreadonly}" grid.column="3"></textbox> <textblock style="{staticresource textblockwhite}" grid.row="0" grid.column="5" text="phone no"/> <textbox style="{staticresource textboxreadonly}" grid.column="7"></textbox> <textblock style="{staticresource textblockwhite}" grid.row="2" grid.column="1" text="father's name"/> <textbox style="{staticresource textboxreadonly}" grid.column="3" grid.row="2"></textbox> <textblock style="{staticresource textblockwhite}" grid.row="4" grid.column="1" text="address"/> <textbox style="{staticresource textboxmultilinereadonly}" grid.row="4" grid.column="3" ></textbox> <textblock style="{staticresource textblockwhite}" grid.row="2" grid.column="5" text="date of birth"/> <textbox style="{staticresource textboxreadonly}" grid.column="7" grid.row="2"></textbox> </grid> </groupbox.content> </groupbox> <groupbox grid.row="4" grid.column="1" x:name="groupboxcasetype"> <groupbox.header> <textblock text="case type" style="{staticresource textblockwhite}"/> </groupbox.header> <groupbox.content> <grid> <grid.columndefinitions> <columndefinition style="{staticresource minwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource maxwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource maxwidthcolumndefinition}"/> <columndefinition style="{staticresource autowidthcolumndefinition}"/> <columndefinition style="{staticresource minwidthcolumndefinition}"/> </grid.columndefinitions> <radiobutton grid.column="1" x:name="rdbmonthlyinterest" content="monthly interest" style="{staticresource radiobuttonwhite}" ischecked="{binding ismonthlyinterestchecked}"/> <radiobutton grid.column="3" x:name="rdbdailyinstallment" content="daily installment" style="{staticresource radiobuttonwhite}" ischecked="{binding isdailyinstallmentchecked}"/> <radiobutton grid.column="5" x:name="rdbmonthlyinstallment" content="monthly installment" style="{staticresource radiobuttonwhite}" ischecked="{binding ismonthlyinstallmentchecked}"/> </grid> </groupbox.content> </groupbox> <groupbox grid.row="6" grid.column="1" visibility="{binding path=ismonthlyinterestchecked, updatesourcetrigger=propertychanged, converter={staticresource visibilityconverter}}" > <groupbox.header> <textblock style="{staticresource textblockwhite}">monthly interest</textblock> </groupbox.header> </groupbox> <groupbox grid.row="6" grid.column="1" visibility="{binding path=isdailyinstallmentchecked, updatesourcetrigger=propertychanged, converter={staticresource visibilityconverter}}" > <groupbox.header> <textblock style="{staticresource textblockwhite}">daily installment</textblock> </groupbox.header> </groupbox> <groupbox grid.row="6" grid.column="1" visibility="{binding path=inmonthlyinstallmentchecked, updatesourcetrigger=propertychanged, converter={staticresource visibilityconverter}}" > <groupbox.header> <textblock style="{staticresource textblockwhite}">monthly installment</textblock> </groupbox.header> </groupbox> </grid> </groupbox.content> </groupbox> </grid> </basecontrols:maintaintemplate.tabsection> </basecontrols:maintaintemplate> here code converter
namespace finance.mainui.common.converters { public class booltovisibilityconverter : ivalueconverter { public object convert(object value, type targettype, object parameter, cultureinfo culture) { return (bool) value ? visibility.visible : visibility.collapsed; } public object convertback(object value, type targettype, object parameter,cultureinfo culture) { throw new notimplementedexception(); } } }
change visibility binding to:
<groupbox grid.row="7" grid.column="1" visibility="{binding relativesource={relativesource findancestor, ancestortype={x:type usercontrol}} path=datacontext.ismonthlyinterestchecked, updatesourcetrigger=propertychanged, converter={staticresource visibilityconverter}}" > then add property ismonthlyinterestchecked viewmodel , bind radiobutton it:
<radiobutton grid.column="0" x:name="rdbmonthlyinterest" content="monthly interest" style="{staticresource radiobuttonwhite}" ischecked="{binding ismonthlyinterestchecked}"/>
Comments
Post a Comment