2012-10-16 90 views
0

它綁定到WPF的ListView,使用ItemsSource="{Binding Path=ProductList}"更新和刪除列表視圖排

private ObservableCollection<SalesItem> _ProductList = new ObservableCollection<SalesItem>(); 
      public ObservableCollection<SalesItem> ProductList { get { return _ProductList; } set { _ProductList = value; } } 

插入新行的ListView:

SalesItem item = new SalesItem { Picture = product.Picture, ProductName = product.Name, Quantity = 1, TotalPrice = product.Price }; 
      ProductList.Add(item); 

現在我想update the quantity, and price, if the quantity is zero, remove from list

List<SalesItem> salesItems = (from SalesItem items in this.dgProductList.ItemsSource 
            select items).ToList<SalesItem>(); 

     foreach (SalesItem salesItem in salesItems) 
     { 
      if (salesItem.ProductName == cbMultiProductList.Text.Trim()) 
      { 
       // Increase item quantity 
       salesItem.Quantity = salesItem.Quantity + 1; 
      } 
     } 

謝謝。


編輯:

SalesItem是EF代碼第一個模型。

試過了,問題是他新的行會追加到最後一行:

ProductList.Remove(salesItem); 
ProductList.Add(salesItem); 

回答

0

對於您需要實現INotyfyPropertyChanged在SalesItem類並通知每個屬性。

+0

謝謝,我該如何實施它沒有觸摸salesItems模型。 – Alvin

+0

如果沒有'INotifyPropertyChanged',你不能實現它。另一種方法是讓你明確地檢查每次數量設置爲零,你應該調用foreach循環,哪一個課程是不好的progarmming。 –

+0

問題是SalesItems是代碼優先模型。 – Alvin