2017-05-29 34 views
0

這是我在WPF中的第一個項目,我目前被卡在我的購物車中。 我使用值爲「1」的成員ItemQuantity創建了一個對象newbasketItem。我的列表視圖通過綁定完美地工作。我可以添加項目,刪除項目並清除我的收藏。現在到我的問題: 我想選擇我的視圖列表中的一個項目,並用一個按鈕增加ItemQuantity。在列表視圖中通過SelectedItem在ObservableCollection中編輯對象的成員

當它已被添加到集合中時,有沒有辦法編輯ItemQuantity

BasketItem newBasketItem = new BasketItem(); 
newBasketItem.ItemQuantity = 1; 

basketitems.Add(newBasketItem); 

newBasketItem是我的ObservableCollection。

謝謝!

回答

0

您的BasketItem類應該實現INotifiedPropertyChange接口,並且listview內容將自動更新(假設您在ItemQuantity上有綁定)。

例如:

public class BasketItem : INotifyPropertyChanged 
{ 
    private int quantity = 0; 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    public int ItemQuantity 
    { 
     get 
     { 
      return this.quantity; 
     } 

     set 
     { 
      if (value != this.quantity) 
      { 
       this.quantity = value; 
       NotifyPropertyChanged(); 
      } 
     } 
    } 
} 

ObservableCollection已經實現了這個接口,但它是不夠的,因爲它只允許在添加,刪除或移動物品觸發事件。但是如果您希望在修改項目時通知UI,則此項目還必須實現INotifyPropertyChanged界面。


關於你的點擊,你就應該使用ICommand通過@Sir入佛​​門的建議。你也可以做這樣的XAML如下:

<ListView ItemsSource="{Binding Items}" IsItemClickEnabled="True" ItemClick="ListView_ItemClick" Margin="0,50,0,0" > 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding ItemQuantity}" /> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
</ListView> 

並在後面的代碼:

private void ListView_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    var item = e.ClickedItem as BasketItem; 
    item.ItemQuantity++; 
} 
+0

嗨阿爾諾,非常感謝你的回覆。 該代碼正在工作,但我不知道放入我的點擊事件來增加數量的語法。我想在我的列表視圖中選擇項目。 – MikeSharp

+1

項目添加,刪除,移動的事件在INotifyCollectionChanged中定義。 ObservableCollection實現INotifyCollectionChanged和INotifyProperyChanged,但僅用於集合本身 –

+0

@MikeSharp忘記單擊事件處理程序。在BasketItem中定義ICommand屬性並將其命名爲IncreaseQuantity並將其綁定到按鈕的Command屬性。有很多示例如何創建和綁定ICommand –

相關問題