Это мой код:Удалить элемент в ListView Разливное
public partial class MyGS: ContentPage {
public MyGS() {
InitializeComponent();
BindingContext = new MyGSViewModel();
}
public class MyGSViewModel: INotifyCollectionChanged {
public event NotifyCollectionChangedEventHandler CollectionChanged;
public ObservableCollection <SchItem> Items {get;private set;}
public MyGSViewModel() {
Items = new ObservableCollection<SchItem>();
//Item Population
public void removeItem(int rid, int lid) {
SchItem myItem = Items[lid];
Items.Remove(myItem);
CollectionChanged ? .Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, myItem));
}
}
public class SchItem {
public int realm_id {get;set;}
public int list_id {get;set;}
public ICommand TapCommand {
get {return new Command(() => {
Debug.WriteLine("COMMAND: " + list_id);
MyGSViewModel gsvm = new MyGSViewModel();
gsvm.removeItem(realm_id, list_id);
});
}
}
}
}
Когда метод RemoveItem не называется вид не обновляется, и элемент будет не удален из ListView, может быть, проблема о CollectionChanged но Я не понимаю, как это исправить.
Примечание: Отладка в устройстве Android
О редактировании, я получил 'System.In validCastException: указанный сброс недействителен. 'возможно, потому что у меня есть команда tap в классе определения элемента? Редактировать: Я получил обратно SchItem, а не MyGSViewModel как CommandParameter – Segamoto
@Segamoto O правильно, потому что 'BindingContext' является объектом, поскольку он находится в' ListView' ... поэтому в этом случае я определенно рекомендую использовать 'Tapped' мероприятие. Я отредактирую свой ответ. – hvaughan3
@Segamoto Проверить сейчас – hvaughan3