这是我在WPF的第一个项目,目前我被困在购物车上。
我创建了一个对象newbasketItem
,其成员ItemQuantity
的值为“1”。我的listview通过Binding完美地运行。我可以添加项目,删除项目和清除我的收藏。现在我的问题:
我想在视图列表中选择一个项目,并使用按钮递增ItemQuantity。
有没有办法在ItemQuantity
添加到集合时编辑它?
BasketItem newBasketItem = new BasketItem();
newBasketItem.ItemQuantity = 1;
basketitems.Add(newBasketItem);
newBasketItem是我的ObservableCollection。
谢谢!
答案 0 :(得分: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
接口。
关于您的点击事件,您应该使用@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++;
}