c# - MVVM ObservableCollection inside a ObservableCollection (ViewModel) -


i wondering how can have sub collection of parent collection?

for example,

i have observablecollection of products, adding , hen binding xaml correctly. however, need have observablecollection contains product items.

basically thinking in view model of having

 productcollection[0].productitemcollection.add(newproductitem); 

how go in mvvm?

thanks

chris

not sure if that's looking but...

let's have 2 grids in xaml. first shows porducts, second selected product's items.

<window x:class="wpfapplication1.mainwindow"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     title="mainwindow"     height="350"     width="525"> <grid>     <grid.rowdefinitions>         <rowdefinition height="173*" />         <rowdefinition height="147*" />     </grid.rowdefinitions>      <datagrid itemssource="{binding productscollection}"               selecteditem="{binding selectedproduct}"               margin="10">     </datagrid>      <datagrid itemssource="{binding productitemscollection}"               margin="10"               grid.row="1">     </datagrid>  </grid> 

you have classes declared

public class product {     public product()     {         itemscollection = new observablecollection<item>();     }     public int id { get; set; }     public string name { get; set; }     public observablecollection<item> itemscollection { get; set; } }  public class item {     public int id { get; set; }     public datetime date { get; set; } } 

selecting product first grid update second grid's itemsource in vm below

    private observablecollection<product> _productscollection = new observablecollection<product>();     public observablecollection<product> productscollection     {         get{return _productscollection;}         set         {             _productscollection = value;             onpropertychanged("productscollection");         }     }      private observablecollection<item> _productitemscollection;     public observablecollection<item> productitemscollection     {         {return _productitemscollection; }         set         {             _productitemscollection = value;             onpropertychanged("productitemscollection");         }     }      private product _selectedproduct = null;     public product selectedproduct     {         {return _selectedproduct;}         set         {             _selectedproduct = value;             productitemscollection = _selectedproduct.itemscollection;             onpropertychanged("selectedproduct");         }     } 

finally add sample data

    public mainwindow()     {         initializecomponent();         this.datacontext = this;          product product1 = new product() { id = 1, name = "product1" };         product1.itemscollection.add(new item() { id = 1, date = datetime.now});         product1.itemscollection.add(new item() { id = 2, date = datetime.now.adddays(-1) });          product product2 = new product() { id = 2, name = "product2" };         product2.itemscollection.add(new item() { id = 3, date = datetime.now });         product2.itemscollection.add(new item() { id = 4, date = datetime.now.adddays(-2) });          productscollection.add(product1);         productscollection.add(product2);     } 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -