Sunday, 15 January 2012

c# - Get the index of long pressed item in listpiker wp7 -



c# - Get the index of long pressed item in listpiker wp7 -

i have listpicker listpicker1 items populated in using isolated storage, when long press (hold) item in listpicker1, context menu ll appear having options "delete", "cancel" etc. when click on 'delete', wanna delete item lispicker1 unable dont either index or actual info of long pressed item in deleteevent handler(even had tried using gesturelistener_hold, in vain). below code had tried. pls help me out if can. in advance.

<toolkit:listpicker selectionchanged="listpicker1_selectionchanged" fontsize="24" itemcountthreshold="1" name="listpicker1" margin="6,0,102,513" listpickermode="full" height="72" verticalalignment="bottom" > <toolkit:listpicker.itemtemplate > <datatemplate x:name="pickerfullmodeitemtemplate"> <stackpanel x:name="sp" orientation="horizontal" > <textblock x:name="txt" text="{binding contactname}" margin="16 0 0 0" fontsize="35" /> <textblock name="number" text="{binding contactnumber}" foreground="azure" fontsize="28"/> <toolkit:contextmenuservice.contextmenu > <toolkit:contextmenu> <toolkit:menuitem header="delete" click="menuitem_click" /> <toolkit:menuitem header="cancel" /> </toolkit:contextmenu> </toolkit:contextmenuservice.contextmenu> </stackpanel> </datatemplate> </toolkit:listpicker.itemtemplate> </toolkit:listpicker> } private void menuitem_click(object sender, routedeventargs e) { savenumber info = (sender listpicker).selecteditem savenumber; //nullref exception here// if (messagebox.show("are sure want delete contact list?", "delete contact", messageboxbutton.okcancel) == messageboxresult.ok) { xmlwritersettings xmlwritersettings = new xmlwritersettings(); xmlwritersettings.indent = true; using (isolatedstoragefile myisolatedstorage = isolatedstoragefile.getuserstoreforapplication()) { using (isolatedstoragefilestream stream = myisolatedstorage.openfile("people.xml", filemode.create)) { xmlserializer serializer = new xmlserializer(typeof(list<savenumber>)); using (xmlwriter xmlwriter = xmlwriter.create(stream, xmlwritersettings)) { serializer.serialize(xmlwriter, deletepersondata(data)); this.listpicker1.itemssource = data2; } } } } } private list<savenumber> deletepersondata(savenumber ob) { //data2.removeat(listpicker1.selectedindex); //selected index set 1// this.data2.remove(ob); homecoming data2; }

you need find root of item long-pressed, here can obtain index of item within container. using linqtovisualtree:

private void menuitem_click(object sender, routedeventargs e) { stackpanel rootitem = e.originalsource.ancestors() .oftype<stackpanel>() .where(i => i.name == "sp"); int index = listpicker1.itemcontainergenerator.indexfromcontainer(rootitem); }

c# windows-phone-7

No comments:

Post a Comment