【发布时间】:2012-01-22 12:13:48
【问题描述】:
阅读了很多关于 IObservable 的内容,我想知道在我的场景中这种模式会给我带来什么(如果有的话)。
我有一个带有数据网格的 WPF 应用程序,该网格绑定到 Product 的 IObservable 集合。
ProductList.DataContext = AppState.Current.Products
...其中 AppState.Current.Products 返回 ObservableCollection<Product>
我的目标是:
- 跟踪已更改对象的列表
- 通知 UI 对象已更改,以便我可以启用 保存按钮
我的产品类看起来像这样......
public class Product
{
string _desc;
public string Description
{
get { return _desc; }
set { _desc = value; }
}
}
现在,如果我更新网格上一行的描述列,Description 的设置器确实 会被调用。所以我可以在这里预订一些代码来在我的产品上设置一个Dirty 标志,然后我可以使用它来查询需要保存到数据库的更改产品列表。
我认为我可以使用 IObservable 来实现我的第二个目标,即通知用户界面一行已更改?或者有没有更简单的方法,比如网格上的一些属性?
如果我要使用 IObservable,我已经看到了产品公开可订阅事件的示例。但是,我不想将事件处理程序连接到我的所有对象。当集合中的任何对象发生更改时,我需要一些东西来告诉我。
此外,我如何将此通知连接到我的 UI。
【问题讨论】:
-
你看过 INotifyPropertyChanged 了吗? msdn.microsoft.com/en-us/library/…
标签: c# wpf wpfdatagrid system.reactive