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的值。
------解决思路----------------------

------解决思路----------------------

如果你想更新,你就得用MVVM
如果不用MVVM
那你
ObservableCollection<T> listA=new ObservableCollection<T>();
listA.Add(xx) 后
list=listA.ToList(); 你得用这样才会更新视图
首先:
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的值。
------解决思路----------------------
------解决思路----------------------
如果你想更新,你就得用MVVM
如果不用MVVM
那你
ObservableCollection<T> listA=new ObservableCollection<T>();
listA.Add(xx) 后
list=listA.ToList(); 你得用这样才会更新视图