UI和他绑定的数据模型和数据库(Model) 是分离的三个层面的东西。 我们INotifyPropertyChanged实现的是数据模型到绑定UI的一个通知功能,然后让UI绑定能够去拿到更新后的数据模型的新值。
但是,数据库和数据模型之间是一个单向的关系,都是数据模型去查询去更新数据库,数据库并不会主动地更新和通知数据模型,这个是非常明确的。
所以只用INotifyPropertyChanged是无法实现当数据库更新,UI控件同步的更新。
第一种方法:目前我采用的方法是:利用Timer或者dispatcherTimer。通过定时地查询数据库,来更新数据模型。 一旦数据库更新了,在一个查询周期后,查询到了新的值,数据模型更新就可以同时通知UI去更新UI。
但是这种方法有一个缺点那就是不断隔一段时间查询数据库。影响程序响应速度和性能,也会加大客户端下载量。也很费服务器的流量。
第二种方法: 用FileSystemWatcher这个类监视数据文件。比如监视sql server .mdf,.ldf文件。xml文件。但是这也有一定局限那就是如果数据库文件存放的服务器如果和web服务器不在同一个服务器。就没法监视了。
目前还没有更好的方法。如果哪位有更好的方法请不吝赐教。