如何在 ObservableCollection 对象中添加新数据?
Posted
技术标签:
【中文标题】如何在 ObservableCollection 对象中添加新数据?【英文标题】:How to add a new data in ObservableCollection object? 【发布时间】:2016-11-04 18:04:27 【问题描述】:public class ViewModel
private ObservableCollection<Place> places = new ObservableCollection<Place>
new Place City = "New York", Country = "USA", ID = 1,
new Place City = "Chicago", Country = "USA", ID = 2
;
public ObservableCollection<Place> Places
get return places;
set places = value;
places.Add(new Place Id = 3,
City = "Miami",
Country = "USA");
由于某些原因,这部分代码不起作用:
places.Add(new Place Id = 3,
City = "Miami",
Country = "USA");
除了那个,我应该放什么?
提前致谢!
【问题讨论】:
您不能将语句放在类定义本身中,而是将它们放在函数中。除此之外,为你的地方设置一个公共设置器是个坏主意:替换它时不会通知用户界面 是的,谢谢。这是正确的代码:'public class ViewModel public ViewModel() AddNewPlace(); ... private void AddNewPlace() places.Add(new Place ID = 3, City = "Miami", Country = "USA" ); ' 【参考方案1】:没有看到所有代码,我只能猜测。但是 Place 类是否实现了 INotifyPropertyChanged?如果不需要,则通知集合发生了更改,并且绑定可以正确更新。
【讨论】:
【参考方案2】:我不知道您何时想将新地点添加到收藏中。 但是你可以在你的视图模型类上使用这样的方法:
public class ViewModel
...
public void AddNewPlace()
places.Add(new Place
Id = 3,
City = "Miami",
Country = "USA"
);
您也可以直接使用 Places 属性从视图模型之外添加地点。
viewModel.Places.Add(new Place
Id = 3,
City = "Miami",
Country = "USA"
);
顺便说一句:您应该删除 Places 属性上的设置器,因为您不应该从外部更改整个集合,因为这是您的视图模型的实现细节。
【讨论】:
以上是关于如何在 ObservableCollection 对象中添加新数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在绑定到ObservableCollection时删除DataGrid的空行 ?
如何使 ObservableCollection 线程安全?
如何构建一个现代的、同步的 ObservableCollection?
如何通过工作线程更新 ObservableCollection?
Mvvm:如何更新我的ObservableCollection 从另一个ViewModel?
如何在listview - WPF MVVM上拖放后更新codeBehind中的ObservableCollection