2016-07-02 34 views
-5

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

取而代之的是,我應該放在那裏?

在此先感謝!

+3

你不能把語句放在類定義本身中,而是把它們放在一個函數中。除此之外,爲你的位置安裝一個公共二傳手是一個不好的主意:在更換它時不會通知你。 – stijn

+0

是的,謝謝。這是正確的代碼:'public class ViewModel { public ViewModel() { AddNewPlace(); } ... 私人無效AddNewPlace(){ places.Add(新的地方 { ID = 3, 市= 「邁阿密​​」, 國家= 「USA」 }); } }' – Navuhodonosor

回答

0

沒有看到我只能猜到的所有代碼。但是Place類實現INotifyPropertyChanged嗎?如果不需要,則會通知收集發生更改,並且綁定可以正確更新。

0

我不知道你什麼時候想把你的新地方添加到收藏中。 但是你可以在你的視圖模型類中使用的方法是這樣的:

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

您也可以直接使用場所屬性,從您的視圖模型的外面加上地方。

viewModel.Places.Add(new Place 
{ 
    Id = 3, 
    City = "Miami", 
    Country = "USA" 
}); 

順便說一句:你應該刪除你的鄰居 - 屬性的setter,因爲你不應該全收從外部改變,因爲這是你的視圖模型的實現細節。

相關問題