这是我在 WPF 中的第一个项目,我目前被困在我的购物车上。 我创建了一个对象newbasketItem
,该对象具有值为"1"的成员ItemQuantity
。我的列表视图通过绑定工作得很好。我可以添加项目、删除项目和清除我的收藏。现在谈谈我的问题: 我想在我的视图列表中选择一个项目,并使用按钮递增项目数量。
当ItemQuantity
已添加到集合中时,有什么方法可以编辑它吗?
BasketItem newBasketItem = new BasketItem();
newBasketItem.ItemQuantity = 1;
basketitems.Add(newBasketItem);
newBasketItem 是我的 ObservableCollection。
谢谢!
您的BasketItem
类应实现INotifiedPropertyChange
接口,并且列表视图内容将自动更新(前提是您对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
接口。
关于点击事件,您应该按照 @Sir Rufo 的建议使用ICommand
。还可以像这样使用 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++;
}