簡単なサンプルアプリListView
を含むビューモデルにバインドしています。ObservableCollection
public class ViewModel : INotifyPropertyChanged
{
public ViewModel(){}
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<Item> _items;
public ObservableCollection<Item> Items
{
get
{
return this._items;
}
set
{
if (value != this._items)
{
this._items = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Items"));
}
}
}
}
public class Item
{
public string Name;
}
次の関数は、ListView の SelectionChanged イベントにバインドされています。
private void ItemListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
model.Items.Add(new Item { Name = "added item" });
model.Items = new ObservableCollection<Item> { new Item { Name = "new item 1" }};
}
イベントが発生すると、これが発生するはずです
- 新しいアイテム (「追加されたアイテム」) が既存のものに追加される
ObservableCollection
ObservableCollection
新しいコレクションに設定 [単品、「新しいアイテム 1」]
実際に何が起こるか:
ObservableCollection
新しいコレクションに設定 [単品、「新しいアイテム 1」]- 新しいコレクションの末尾に追加された新しいアイテム (「追加されたアイテム」)
これらが間違った順序で起こっている理由を誰か説明できますか?