2016-07-02 23 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" 
}); 

ところで:これはあなたのビューモデルの実装の詳細があるので、あなたが外からコレクション全体を変更すべきではありませんので、あなたはあなたの場所、プロパティにセッターを削除する必要があります。

関連する問題