wpf - How manage columns visibility in DataGrid placed in popup part of combobox -
wpf - How manage columns visibility in DataGrid placed in popup part of combobox -
i have radio button , combo box on wpf page. combobox
customized version of normal combobox
can show multiple columns in dropdown. want display or hide column depending upon ischecked
state of radio button. i'm trying utilize datatrigger
avoid code behind.
<radiobutton content="show id column" x:name="chkscrollcustomernumber" ischecked="true" > <m:multicolumncombobox x:name="cbocustomer" issynchronizedwithcurrentitem="true" itemssource="{binding allcustomers}" selectedvaluepath="customerid" displaymemberpath="customerid" selectedvalue="{binding salesorder.customerid}"> <datagridtextcolumn x:name="colid" binding="{binding customerid, mode=default}" /> <datagridtextcolumn binding="{binding customername, mode=default}" /> <datagridtextcolumn binding="{binding billingaddress, mode=default}"/> <m:multicolumncombobox.style> <style> <setter property="visibility" value="collapsed"/> <style.triggers> <datatrigger binding="{binding elementname=chk1, path=ischecked}" value="true"> <setter targetname="colid" property="visibility" value="visible"/> </datatrigger> <datatrigger binding="{binding elementname=chk1, path=ischecked}" value="false"> <setter targetname="colid" property="visibility" value="collapsed"/> </datatrigger> </style.triggers> </style> </m:multicolumncombobox.style> </m:multicolumncombobox>
but tells me colid cannot found.
edit
ok, here trick how thing working:
create visibilitytobooleanconverter: class="lang-cs prettyprint-override">public class visibilitytoboolean : ivalueconverter { public object convert(object value, type targettype, object parameter, cultureinfo culture) { homecoming (visibility) value == visibility.visible; } public object convertback(object value, type targettype, object parameter, cultureinfo culture) { homecoming (bool) value ? visibility.visible : visibility.collapsed; } }
bind ischecked property of radiobutton via converter required column: class="lang-xaml prettyprint-override"><radiobutton ischecked="{binding elementname=cbocustomer, path=columns[0].visibility, converter={staticresource booltovis}, mode=onewaytosource}" ... />
specify appropriate index of column each radiobutton
(all previous suggestions wrong, because datagridtextcolumn here not part of logic tree, , doesn't have datacontext property useless seek , bind it's properties anywhere)
wpf xaml datatrigger
Comments
Post a Comment