最近做一个物业权限管理的项目,需要在前端界面数据变化的时候通知数据源进行跟新,然后将跟新的数据写入数据库中,一开始是想通过前端的界面进行数据的获取,后来发现这是错误的,应该直接从数据源进行获取数据,所以需要前端数据变化时通知数据源进行更新。这就用到了ObservableCollection<T>这个动态数据集合,可以说这个比list<T>好用,但也不是万能的,至少单独一个人不行,还需要些帮手。因为只有前端的容器的元素数量发生变化时才会通知ObservableCollection进行更新,若是想要做到容器内元素的属性变化时界面能更新,或者ObservableCollection也能更新,这时候就需要T继承 INotifyPropertyChanged,并实现相应的接口。具体方法请参考
WPF中的Binding(一)
对于list和ObservableCollection的互换
T tList = new List(tObjectStruct .ToList());
ObservableCollection tObjectStruct = new ObservableCollection(tList);
都在构造函数中即可完成
也可以:
tList.ForEach(p => tObjectStruct.Add(t));
WPF
提供
ObservableCollection
类,该类是实现INotifyCollectionChanged接口的
数据
收集的内置实现。
public class
ObservableCollection
: Collection, INotifyCollectionChanged, INotifyPropertyChanged
WPF
的MVVM模式提供的
数据
绑定方式简单化了
数据
更新
反馈到
界面
的步骤,但是在静态
数据
绑定时需要使用事件调用方法向程序发送调用通知。
需要注意使用PropertyChanged的方法是无效的:
ViewModel的代码:
private static string _connectstr;
public static string ConnectStr
get { return _connectstr; }
今日,本山人遇到一个APP开发常见
问题
,闲来无事,就来叨叨两句,话不多说,
问题
如下:
四个tab,在其中一个tab中改变了全局参数,然后切换到另外一个tab页面,
数据
没有刷新。
山人自有妙计,献丑了,希望各位看官看后指点一二:
当我们切换
数据
,改变全局
数据
的时候,就把APP缓存的
数据
进行
更新
。这种方案有个缺陷,就是每次切换的时候都要去
更新
数据
,这样使得APP的性能不是很好。
利用监听。当我们改变全局
数据
后,当我们切换到另外一个tab页面,然后监听所依赖的全局参数是否发生改变,如果发生了改
F_hong_bo: