Проблема, когда я удаляю элемент (ObservableCollection) из ListView в Xamarin - PullRequest
1 голос
/ 06 мая 2019

Я добавлю фрагменты кода и в конце результат моей проблемы.

EvidenciaItemVideModel.cs

private string caption;
private ImageSource thumb;     

public ImageSource Thumb
{
    get { return this.thumb; }
    set { SetValue(ref this.thumb, value); }
}

public string Caption
{
    get { return this.caption; }
    set { SetValue(ref this.caption, value); }
}

Listview связан со следующим свойством.

private ObservableCollection<EvidenciaItemViewModel> evidencias;
public ObservableCollection<EvidenciaItemViewModel> Evidencias
{
    get { return this.evidencias; }
    set { SetValue(ref this.evidencias, value); }
}

Фрагмент, в котором я добавляю элемент в просмотр списка

    if (this.file != null)
    {
        this.Evidencias.Add(new EvidenciaItemViewModel {
            Caption = "Archivo " + (this.Evidencias.Count + 1),
            Thumb = this.ImageSource
        });                
    }

Процесс удаления элемента выглядит следующим образом.

public void RemoveEvidencia(EvidenciaItemViewModel obj)
{
    this.Evidencias.Remove(obj);
}

Все работает правильно,проблема, возникающая при удалении элемента;например: если у меня есть 4 элемента и я исключаю номер 2, изображение последнего элемента копируется до положения следующего элемента исключения.Я добавляю пару изображений, чтобы показать, что я указываю.

ListView загружен до удаления элемента

Элемент удален, изображение последнего элемента реплицируется вте, которые следуют за ним после удаленного элемента.

1 Ответ

0 голосов
/ 07 мая 2019

Метод нажатия кнопки «Удалить» должен выглядеть примерно так:

void OnDeleteClicked(Object sender, MyEventArgs args)
{
  Button btn = sender as Button;
  var evidenciaItemVideModel = btn.BindingContext as EvidenciaItemVideModel;
  EvidenciaVideModelInstance.RemoveEvidencia(evidenciaItemVideModel);
}

Тогда EvidenciaVideModel's RemoveEvidencia может работать:

public void RemoveEvidencia(EvidenciaItemViewModel obj)
{
   Evidencias.Remove(obj);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...