我有一个WP7应用程序(Silverlight),它有一个带有文本框的页面,该文本框绑定(TwoWay)到viewmodel上的属性,该属性从Linq到Sql数据库获取值。这一切都有效,除非我更改文本框的值,它会正确设置所有内容,但不会调用datacontext的SubmitChanges,因此不会保存。这是正常情况吗?我应该采用不同的方式吗?有没有办法告诉双向绑定它必须调用SubmitChanges方法?感谢。
答案 0 :(得分:2)
您不应将文本框直接绑定到数据库。因此,如果您没有使用实现INotifyPropertyChanged
的ViewModel,而是直接绑定到linq2sql实体类,那么您做错了。
将您希望公开的属性包装到ViewModel中的UI中,然后在SubmitChanges()
事件处理程序中调用PropertyChanged
。
当然,最好的方法是拥有一个“自然保存点”,例如,如果您有页面更改(如OneNote / Office)或保存按钮。
答案 1 :(得分:0)
这很正常。如果您希望每次更改属性时提交,您可以订阅对象的PropertyChanged
事件,并手动调用SubmitChanges
。
但我不推荐它。为获得最佳效果,请覆盖页面的OnNavigatedFrom
方法并在那里调用SubmitChanges
。