我有一个treeView控件,其ItemSource绑定到一个字符串集合。如果我像这样添加项目
private void AddItems()
{
_myList.Add("string1");
_myList.Add("string2");
_myList.Add("string3");
NotifyOfPropertyChanged(() => MyList);
}
我的字符串集合定义如下
private Collection<string> _myList;
public Collection<string> MyList
{
get
{
return _myList;
}
}
然后在treeView控件上没有任何更新。但是,如果我像这样定义集合
private Collection<string> _myList;
public Collection<string> MyList
{
get
{
_myList = new Collection<string>();
_myList.Add("string1");
_myList.Add("string2");
_myList.Add("string3");
return _myList;
}
set { _myList = value; NotifyOfPropertyChange(() => MyList); }
}
并像这样设置集合
private void AddItems()
{
Collection<string> tempList = new Collection<string>();
tempList.Add("string1");
tempList.Add("string2");
tempList.Add("string3");
MyList = tempList;
}
然后树控件会显示项目。
答案 0 :(得分:1)
最有可能的原因是该列表仍然是相同的参考。你真正想要的是ObservableCollection<T>
。
答案 1 :(得分:1)
AddItems
的初始代码永远不会更改属性MyList
的值,该属性是对列表对象的引用,它只是在内部更改引用的实例。
如果您想更改集合,请使用INotifyCollectionChanged
界面。