c# - Get object property stored in listview from another page wpf -
this class :
class discussion { public string name {get; set;} public string discussionid { get; set; } public list<message> liste {get; set;} public discussion(string name, string discussionid) { this.name = name; this.discussionid = discussionid; } i create instance of class , store them in listview. when double click on listviewitem (it show name property), navigate page need know discussionid.
how can property ? how navigate new page :
public partial class discussionpage : page { public discussionpage() { initializecomponent(); try { sqldatareader read = broker.sqlcommand("select discussion.titre, user1.nom dbo.discussion, dbo.user1 user1.id = discussion.id_creer;").executereader(); while (read.read()) { discussion d = new discussion(read["titre"].tostring(), read["nom"].tostring()); listdiscussion.items.add(d); } } catch (exception) { throw; } } private void listview_mousedoubleclick(object sender, mousebuttoneventargs e) { dependencyobject clickedobj = (dependencyobject)e.originalsource; while (clickedobj != null && clickedobj != listdiscussion) { if (clickedobj.gettype() == typeof(listviewitem)) { discussion selecteddiscussion = (discussion)listdiscussion.selecteditem; this.navigationservice.navigate(new messagepage(selecteddiscussion)); break; } clickedobj = visualtreehelper.getparent(clickedobj); } } private void openadddiscussion(object sender, routedeventargs e) { adddiscussion add = new adddiscussion(); add.show(); } } i need know discussionid load content of page :
public partial class messagepage : page { public messagepage(discussion selecteddiscussion) { initializecomponent(); try { sqldatareader read = broker.sqlcommand("select message.text dbo.message message.id_posseder = \'" + selecteddiscussion.discussionid + "\'").executereader(); while (read.read()) { message m = new message(read["text"].tostring()); showmessage.items.add(m); } } catch (exception) { throw; } } } full code added, still don't work selectedvalue:
incoherent accessibility: parameter type 'commapp.classes.discussion' less accessible method 'commapp.messagepage.messagepage (commapp.classes.discussion)'
without a good, minimal, complete code example, it's impossible know sure best approach is.
however, if have set listview correctly , itemssource collection of discussion objects, default selectedvalue property return discussion object instance reference corresponds selected item in list.
in case, change code this:
private void listview_mousedoubleclick(object sender, mousebuttoneventargs e) { dependencyobject clickedobj = (dependencyobject)e.originalsource; while (clickedobj != null && clickedobj != listdiscussion) { if (clickedobj.gettype() == typeof(listviewitem)) { discussion selecteddiscussion = (discussion)listdiscussion.selectedvalue; this.navigationservice.navigate(new messagepage(selecteddiscussion)); break; } clickedobj = visualtreehelper.getparent(clickedobj); } } i.e. use selectedvalue property instead of selecteditem. if have deviated default setting selectedvaluepath property, want use itemcontainergenerator object correct reference:
private void listview_mousedoubleclick(object sender, mousebuttoneventargs e) { dependencyobject clickedobj = (dependencyobject)e.originalsource; while (clickedobj != null && clickedobj != listdiscussion) { if (clickedobj.gettype() == typeof(listviewitem)) { discussion selecteddiscussion = (discussion)listdiscussion.itemcontainergenerator .itemfromcontainer((listviewitem)listdiscussion.selecteditem); this.navigationservice.navigate(new messagepage(selecteddiscussion)); break; } clickedobj = visualtreehelper.getparent(clickedobj); } } if neither of seem apply in case, please edit question includes code example, better answer can provided.
Comments
Post a Comment