单击列表中的元素从列表视图中删除项目,并使用mvvm更新列表视图

时间:2019-07-09 18:38:40

标签: listview mvvm xamarin.forms

我有一个列表视图,并将其来源分配为

lvItemSigns.ItemsSource = viewmodel.ItemSignsList;

在“列表视图”数据单元中,我要添加一个按钮,单击该按钮应将其删除,列表应自动更新。

页面内:

DeleteDuplicateItem.Clicked += Remove_Clicked;

private void Remove_Clicked(object sender, EventArgs e)
{
var button = sender as Button;
var ticketItem = button.BindingContext as TicketItem;
var vm = BindingContext as ItemSignsTabViewModel;
vm.RemoveItemCommand.Execute(ticketItem);
}

在上面的代码中,vm始终为null,如果我使用新实例,我的列表将不会更新。

在视图模型中:

public Command<TicketItem> RemoveItemCommand
    {
        get
        {
            return new Command<TicketItem>((TicketItem) =>
            {
                ItemSignsList.Remove(ItemSignsList.Where(i => i.MobileID == TicketItem.MobileID).Single());
            });
        }
    }

那么如何在单击按钮时获取视图模型实例以更新我的列表?

1 个答案:

答案 0 :(得分:0)

  

lvItemSigns.ItemsSource = viewmodel.ItemSignsList;

您已经生成了视图模型,为什么不在下面直接使用它呢?

DeleteDuplicateItem.Clicked += Remove_Clicked;

private void Remove_Clicked(object sender, EventArgs e)
 {
   var button = sender as Button;
   var ticketItem = button.BindingContext as TicketItem;
   viewmodel.RemoveItemCommand.Execute(ticketItem);
 }