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

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -