c# - get data from datalayer into observablecollection in View -
i data datalayer class viewmodel doesn't observablecollection binded listbox in view.
public class viewmodel : notifyuibase { public viewmodel() { findimagecommand = new relaycommand(findimage); } public observablecollection<image> findvisualreferences { get; set; } public relaycommand findimagecommand { get; private set; } private void findimage() { string searchterm = this.searchbox; var dbfunctions = new databasefunctions(); findvisualreferences = dbfunctions.findvisualreferences(searchterm); } } i've tested findvisualreferecences(searchterm) method , gives items needed fill observablecollection. tested databinding view , that's working to.
when place method in constructor observablecollection gets filled
public viewmodel() { var dbfunctions = new databasefunctions(); findvisualreferences = dbfunctions.findvisualreferences(searchterm); } but need call method when user gives findimagecommand. how can make work? i'm rookie when comes coding.
your problem setting findvisualreference property new instance of observablecollection instead of adding , removing existing one.
public observablecollection<image> findvisualreferences { get; set; } private void findimage() { string searchterm = this.searchbox; var dbfunctions = new databasefunctions(); findvisualreferences.clear(); findvisualreferences.addrange(dbfunctions.findvisualreferences(searchterm)); } alternatively can you've done , set property
findvisualreferences = dbfunctions.findvisualreferences(searchterm); but in order work have raise propertychanged event.
private observablecollection<image> _findvisualreferences; public observablecollection<image> findvisualreferences { get{ return _findvisualreferences;} set { _findvisualreferences = value; raiseproperychanged("findvisualreferences"); } } but if doing there's not point in using observablecollection being use list instead.
my suggestion , make readonly property (i.e. getter only) , add it.
private observablecollection<image> _findvisualreferences; public observablecollection<image> findvisualreferences { { if(_findvisualreferences == null) _findvisualreferences = new observablecollection<image>(); return _findvisualreferences; } }
Comments
Post a Comment