Access WPF Treeview selected index through a TreeViewItem object -


i have treeview checkboxes each item using datatemplate.

<treeview itemssource="{binding}"> <datatemplate datatype="{x:type local:matchdataleaf}">     <grid margin="3">         <grid.columndefinitions>             <columndefinition width="240"/>             <columndefinition width="100"/>             <columndefinition width="150"/>             <columndefinition width="*"/>             <columndefinition width="60"/>         </grid.columndefinitions>          <stackpanel grid.column="0" orientation="horizontal">             <checkbox x:name="selectcheckbtn" grid.column="0" ischecked="true" click="select_click"                       tag="{binding}" commandparameter="{binding relativesource={relativesource mode=findancestor, ancestortype={x:type treeviewitem}}}"/>             <textblock grid.column="1" margin="5,0,0,0" text="{binding path=name}" fontfamily="arial" fontsize="12" fontweight="bold" foreground="black" verticalalignment="center"/>     </stackpanel>  </grid> </datatemplate> 

in checkbox click event, i'm trying figure out selected index in main tree's binded list. closest got passing treeviewitem object along in commandparameter, can't it. able the parent itemscontrol using:

itemscontrol parent = itemscontrol.itemscontrolfromitemcontainer(selecteditem); int s = parent.items.indexof(selecteditem); 

but s = -1 here.

i have tag on checkbox has underlying object in it. sure, can find on list object, seems there must simpler way find index.

the itemscontrol fetching might stackpanel, or grid. should able access checkbox through event sender, , navigate treeviewitem , treeview , use indexof.

 private void checkbox_click(object sender, routedeventargs e)  {         checkbox cb = (checkbox)sender;         stackpanel sp = (stackpanel)cb.parent;         grid g = (grid)sp.parent;         contentpresenter cp = (contentpresenter)visualtreehelper.getparent(g);         ilist l = (ilist)mytreeview.itemssource;         object o = cp.content;         messagebox.show(l.indexof(o).tostring());  } 

Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

aspxgridview - Devexpress grid - header filter does not work if column is initially hidden -

c# - How to execute a particular part of code asynchronously in a class -