我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”]- 新项目(“添加的项目”)附加到新集合的末尾
谁能解释为什么这些以错误的顺序发生?