Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 修改ObservableCollection项_C#_Wpf_Observablecollection - Fatal编程技术网

C# 修改ObservableCollection项

C# 修改ObservableCollection项,c#,wpf,observablecollection,C#,Wpf,Observablecollection,我已经向ObservableCollection添加了几个元素,现在我想修改其中一个元素,如下所示: _MyCollection[num].Data1 = someText; 例如,根据下面的代码,意图是:\u MyCollection[5]。Type=changedText _MyCollection.Add(new MyData { Boundary = Text1, Type = Text2, Option = Text3 }); 我该怎么做呢?我想你只是想看看

我已经向ObservableCollection添加了几个元素,现在我想修改其中一个元素,如下所示:

_MyCollection[num].Data1 = someText;
例如,根据下面的代码,意图是:
\u MyCollection[5]。Type=changedText

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

我该怎么做呢?

我想你只是想看看变化吧? 这与ObservableCollection无关,而是与您的
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);

类似的问题:MyCollection[5]有什么问题?除非
MyData
是一个结构,否则它应该可以正常工作。是的,但是相关的代码是什么。是这样的:
MyData[num].Type=changedText
?是的-这也会起作用-但是如果集合很大,当您只想更改项目的值时,绑定的wpf itemcontrol将不得不做额外的工作-您不应该这样做是的,可能不是最好的解决方案;但是,如果您没有修改
MyData
类以实现
INotifyPropertyChanged
的选项,这将起作用。