我在WPF4应用程序中使用MVVM。
在我的应用程序中,ViewModel有一个ObservableCollection ProductsList属性,一个ICommand Save命令属性。 Product类有两个属性:ProductName和Price。
在UI中,窗口的DataContext绑定到ViewModel,xamDataGrid的DataSource绑定到ProductsList属性,按钮绑定到Save属性。
用户将更改视图中的价格列。
我尝试做的是当应用程序首次启动时,SAVE按钮被禁用,因为没有什么新东西可以保存。只要用户对任何记录进行更改,例如更改产品价格,就会启用SAVE按钮。
我的问题是:xamDataGrid是否有一个属性,表明bidden数据已被更改(因此数据网格是脏的)?如果有这样的属性,我想将它绑定到ViewModel的属性,例如bool DataChanged,然后我将使用此DataChanged属性来设置“保存”命令的CanExcuteMethod,以启用SAVE按钮。 / p>
或者,还有其他方法可以完成这个功能吗?
谢谢。
答案 0 :(得分:0)
XamDataGrid不会为此公开属性,因为它不应该由UI控件跟踪,因为它不知道数据存储或者数据是否从其他来源以外的其他来源更改。
最好的方法是在ViewModel中跟踪它,因为如果您依赖View中的控件,则ViewModel依赖于View,这可能会阻止您使用具有相同VeiwModel的不同View。
要执行此操作,请在ViewModel中创建属性,就像您要将网格绑定到它并在ViewModel中的数据更改时设置它的值一样。