WPF 会合赋值视图为什么不更新

WPF 集合赋值视图为什么不更新

首先:

ObservableCollection<T> list=new ObservableCollection<T>();

 ListBoxA.ItemsSource = list;

当list添加对象时ListBox就会自动更新显示;

问题来了:

我在定义一个集合,然后给集合添加一些数据:

ObservableCollection<T> listA=new ObservableCollection<T>();
//......

list=listA;

按照这种写法,ListBox为什么没有更新视图?

------解决思路----------------------
因为list是引用类型
list=listA;
你把它的引用改变了,指向了新的实例,而并没有改变旧的实例的值
而你的控件绑定的是旧的实例
------解决思路----------------------
引用类型的对象,和实例之间的关系,要搞清楚

引用类型,就好比手机号,它代表的是一个人
一个人可以有多个手机号,也就是说,一个实例,可以有多个对象引用它

好比你手机里存的是123456,我手机里存的是654321,拨通后都是打给同一个人

如果你把你手机里的号码改了,并没有改这个人,而只是把它指向了另一个人,懂吗
------解决思路----------------------
你这样只是修改了list的值,但没影响到ListBoxA.ItemsSource的值。
如果你直接这样ListBoxA.ItemsSource = listA就行了,要想视图上有变化,必须更改ItemsSource的值。
------解决思路----------------------
WPF 会合赋值视图为什么不更新
------解决思路----------------------
WPF 会合赋值视图为什么不更新
如果你想更新,你就得用MVVM
如果不用MVVM

那你

ObservableCollection<T> listA=new ObservableCollection<T>();

listA.Add(xx) 后
list=listA.ToList(); 你得用这样才会更新视图