您的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++;
}
嗨阿爾諾,非常感謝你的回覆。 該代碼正在工作,但我不知道放入我的點擊事件來增加數量的語法。我想在我的列表視圖中選擇項目。 – MikeSharp
項目添加,刪除,移動的事件在INotifyCollectionChanged中定義。 ObservableCollection實現INotifyCollectionChanged和INotifyProperyChanged,但僅用於集合本身 –
@MikeSharp忘記單擊事件處理程序。在BasketItem中定義ICommand屬性並將其命名爲IncreaseQuantity並將其綁定到按鈕的Command屬性。有很多示例如何創建和綁定ICommand –