C# 修改ObservableCollection项
我已经向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 }); 我该怎么做呢?我想你只是想看看
_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
的选项,这将起作用。