我有一个ListView
绑定到一个视图模型,其中包含ObservableCollection
在一个简单的示例应用程序。c#代码以错误的顺序执行 - 奇怪的行为
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
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" }};
}
当事件触发的SelectionChanged事件,这应该发生
-
( “添加项”)附加到
- 新项现有
ObservableCollection
ObservableCollection
设置为新集合[单个项目,“新项目1”]
什么实际情况:
ObservableCollection
组附加到结束新收集 的新集合[单个项目, “新项目1”]
- 新项目( “添加项”)
任何人都可以解释为什么这些发生在错误的顺序?
如果您使用的ObservableCollection,你为什么要创建集合的新实例每次?你不能只用现有的一个吗? –
_items应该是私人的,它是新的。如果你想要一个清新的收藏清除它并不新。并且在SelectionChanged中更改集合是很滑的。 +1 Henk – Paparazzi