удаление элемента в списке только для чтения - PullRequest
0 голосов
/ 07 февраля 2011

Я создал список данных, помеченный кнопкой и связанный с текстовым полем.Я хотел бы иметь возможность удалить один элемент, нажав и удерживая.моя проблема: появляется недопустимое исключение операции

вот мой код

удаление кнопки = (кнопка) отправитель;

     fileListbox.Items.Remove(remover.Content); 

исключение System.InvalidOperationException было обработано сообщение = операция не выполненаподдерживается в коллекции только для чтения.StackTrace: System.Windows.Controls.ItemCollection.RemoveImpl (значение объекта) ® System.Windows.Controls.ItemCollection.RemoveInternal (значение объекта) ® System.Windows.PresentationFrameworkCollection 1.Remove(Object value) à proByOrange.views.preDevis.Page1.GestureListener_Tap(Object sender, GestureEventArgs e) à Microsoft.Phone.Controls.SafeRaise.Raise[T](EventHandler 1 eventToRaise, отправитель объекта, 1009 GetSventeventGetter, Func`1 argsGetter, Boolean releaseMouseCapture) à Microsoft.Phone.Controls.GestureListener.ProcessTouchPanelEvents () à Microsoft.Phone.Controls.GestureListener.TouchComplete () à Microsoft.Phone.Controler) à System.Windows.Input.Touch.OnTouch (Отправитель объекта, TouchFrameEventArgs e) à MS.Internal.JoltHelper.RaiseEvent (цель IntPtr, UInt32, идентификатор события IntPtr coreEventArgs, событие UInt32 ArArgsTypeIndex)

справка *1012**

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

Если вы связали ListBox со списком где-то (в модели представления было бы неплохо), используя свойство ItemsSource, как подсказывает Мэтт и из вашего вопроса, то для того, чтобы удалить элемент из спискаудалите его из исходной коллекции.Наилучшим подходом при изменении содержимого списка является использование ObservableCollection<T>, которое вызывает уведомление об изменении коллекции при изменении коллекции, поэтому ваш пользовательский интерфейс будет обновляться автоматически:

public ObservableCollection MyList { get; private set; }
...
// Inside an event handler or view model command handler.
this.MyList.Remove(itemToRemove);
1 голос
/ 07 февраля 2011

Вы пытаетесь удалить элемент из коллекции ReadOnly. Вы не можете изменить такую ​​коллекцию. Как вы можете ожидать по названию, вы можете читать только такую ​​коллекцию, вы не можете ее изменить.

Ваш заголовок относится к текстовому полю, но ваш код и трассировка стека подразумевают что-то с использованием ItemsSource.

Если вам нужно изменить отображаемое, просто сделайте элементы интерфейса доступными только для чтения и оставьте записи для резервного копирования доступными для записи.

Если вы можете показать пример кода, мы можем показать, как его изменить соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...