通过列表视图中的选定项编辑可观察集合中对象的成员



这是我在 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++;
}

最新更新