windows phone 7 - How do i refresh the datacontext on page -
i using mvvm in wp8 app. have landing page(allproducts.xaml
) displays list of products. in constructor have this.datacontext = productsviewmodel;
in allproducts.xaml
, have
listbox
bind property(productlist
) ofproductsviewmodel
.an app bar add button takes user
addproduct.xaml
page. here, user adds new product gets saved in database. after save method called, havenavigationservice.goback();
takes user previous page (allproducts.xaml
)
however, allproducts.xaml
shows newly added product. obvious & think because of navigationservice.goback();
restores state of previous page , not rebinds it.
how rebind/refresh page newly added product displayed in list?
here xaml code in allproducts.xaml
bound productlist
property of productsviewmodel
<phone:longlistselector itemssource="{binding getproductlist, mode=twoway}" name="lls" itemtemplate="{staticresource mydatatemplatehere}" toolkit:tilteffect.istiltenabled="true" selectionchanged="lls_selectionchanged"/>
here productsviewmodel
public class productsviewmodel: inotifypropertychanged { private observablecollection<productlist> _productlist; public observablecollection<productlist> getproductlist { { var prodlist = p in unitofwork.productrepository.getall() join c in unitofwork.customerrepository.getall() on p.custid equals c.custid select new productlist { productid = p.id, productname = p.productname, customerid = c.custid}; _productlist= new observablecollection<productlist>(prodlist .tolist()); return _productlist; } set { _productlist= value; onpropertychanged("getproductlist"); } } public event propertychangedeventhandler propertychanged; protected void onpropertychanged(string propertyname) { if (propertychanged != null) { propertychanged(this, new propertychangedeventargs(propertyname)); } } }
here productlist class.
public class productlist { public int productid { get; set; } public string productname { get; set; } public int customerid { get; set; } }
you gotta let binding know needs query getter.. after adding new item
raisepropertychanged(() => productsviewmodel); or make productsviewmodel observablecollection
Comments
Post a Comment