如何在ObservableCollection对象中添加新数据?

时间:2016-07-02 13:00:35

标签: wpf mvvm observablecollection

如何在ObservableCollection对象中添加新数据?

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"});

而不是那样,我应该把它放在那里?

提前致谢!

2 个答案:

答案 0 :(得分:0)

没有看到我只能猜到的所有代码。但Place类是否实现了INotifyPropertyChanged?如果不需要,则会通知集合发生更改并且绑定可以正确更新。

答案 1 :(得分:0)

我不知道您何时想要将新地方添加到收藏中。 但您可以在视图模型类上使用这样的方法:

function helpful(answer){
        $.post("${createLink(controller: "reviews", action: "dataFromReviews")}",
                {
                    helpful:true,
                    answer:answer
                }
        );
    }

您还可以直接使用Places-property从视图模型外部添加地点。

public class ViewModel
{
    ...
    public void AddNewPlace()
    {
        places.Add(new Place
        {
            Id = 3,
            City = "Miami",
            Country = "USA"
        });
    }
}

顺便说一句:您应该删除Places-property上的setter,因为您不应该从外部更改整个集合,因为这是视图模型的实现细节。