удалить элемент из списка при нажатии на элемент в нем и обновить список с помощью mvvm - PullRequest
0 голосов
/ 09 июля 2019

У меня есть просмотр списка и назначение его источника как

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 голосов
/ 10 июля 2019

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);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...