Я использую следующий код в моей viewmodel для удаления элементов из коллекции:
UnitMeasureCollection.CollectionChanged += new NotifyCollectionChangedEventHandler(ListOfUnitMeasureCollectionChanged);
void ListOfUnitMeasureCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Remove)
{
if (NavigationActions.DeleteConfirmation("Delete Item.", "Are you sure you want to delete this item? This action cannot be undone."))
{
foreach (UnitMeasureBO item in e.OldItems)
{
UnitMeasureBO unitMeasureBO = item as UnitMeasureBO;
bool inUse = unitMeasureRepository.UnitMeasureInUse(unitMeasureBO.UnitMeasureValue);
if (inUse == true)
{
NavigationActions.ShowError("Cannot delete item", "This item cannot be deleted because it is used elsewhere in the application.");
}
else
{
unitMeasureRepository.DeleteUnitMeasure(unitMeasureBO.UnitMeasureValue);
}
}
}
}
}
У меня есть сетка данных, связанная с коллекцией. Мне интересно, есть ли возможность отменить действие удаления на основании запроса подтверждения? Я заметил, что NotifyCollectionChangedEventArgs не имеет метода отмены. Что происходит, когда пользователь удаляет элемент из таблицы данных, но выбирает «нет» в подтверждении, элемент все еще удаляется из таблицы данных Он не удаляется из базы данных, и если сетка данных обновляется, она появится снова. Я использую шаблон mvvm и предпочитаю делать это, не кодируя сетку данных. Любая помощь приветствуется.