Изменить элемент из коллекции ObservableCollection


Я добавил несколько элементов в ObservableCollection и теперь хочу изменить один из них следующим образом:

_MyCollection[num].Data1 = someText;

В качестве примера, согласно приведенному ниже коду, намерение состоит в следующем: _MyCollection[5].Type = changedText;

_MyCollection.Add(new MyData
{
    Boundary = Text1,
    Type = Text2,
    Option = Text3
});

Как я могу это сделать?

2 3

2 ответа:

Я думаю, вы просто хотите увидеть изменения, не так ли? Это не имеет ничего общего с наблюдаемой коллекцией, но с вашим объектом MyData. Он должен реализовать INotifyPropertyChange - Если вы это сделаете, вы увидите внесенные изменения.

public class MyData : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string type;
    public string Type
    {
      get { return type; }
      set
      {
         if (value != type)
         {
            type = value;
            NotifyPropertyChanged("Type");
         }
      }
    }

    // ... more properties

    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

Это вызовет событие CollectionChanged:

MyData temp = _MyCollection[index];
temp.Type = changedText;
_MyCollection.SetItem(index, temp);