0

我在我的 WPF4 应用程序中使用 MVVM。

在我的应用程序中,ViewModel 有一个 ObservableCollection ProductsList 属性,一个 ICommand Save 命令属性。Product 类有两个属性:ProductName 和 Price。

在 UI 中,窗口的 DataContext 绑定到 ViewModel,xamDataGrid 的 DataSource 绑定到 ProductsList 属性,一个按钮绑定到 Save 属性。

用户将对视图中的价格列进行更改。

我尝试做的是当应用程序第一次启动时,SAVE 按钮被禁用,因为没有什么新东西要保存。只要用户对任何记录进行更改,例如更改产品的价格,就会启用“保存”按钮。

我的问题是:xamDataGrid 是否有一个属性表明投标数据已更改(因此数据网格是脏的)?如果有这样的属性,我想将它绑定到 ViewModel 的一个属性,例如 bool DataChanged,然后我会使用这个 DataChanged 属性来设置“保存”命令的 CanExcuteMethod,以启用 SAVE 按钮。

或者,有没有其他方法可以完成这个功能?

谢谢你。

4

1 回答 1

0

XamDataGrid 不为此公开属性,因为 UI 控件不应跟踪此属性,因为它不知道数据存储或数据是否从自身以外的其他源更改。

最好的方法是在 ViewModel 中跟踪这一点,因为如果您依赖 View 中的控件,那么 ViewModel 对 View 有依赖关系,这可能会阻止您使用具有相同 VeiwModel 的不同 View。

为此,请在 ViewModel 中创建属性,就像要将网格绑定到它并在 ViewModel 中的数据更改时设置它的值一样。

于 2012-08-26T13:55:11.953 回答