当TwoWay绑定到数据库时如何保存(SubmitChanges)

时间:2012-01-30 07:49:24

标签: windows-phone-7

我有一个WP7应用程序(Silverlight),它有一个带有文本框的页面,该文本框绑定(TwoWay)到viewmodel上的属性,该属性从Linq到Sql数据库获取值。这一切都有效,除非我更改文本框的值,它会正确设置所有内容,但不会调用datacontext的SubmitChanges,因此不会保存。这是正常情况吗?我应该采用不同的方式吗?有没有办法告诉双向绑定它必须调用SubmitChanges方法?感谢。

2 个答案:

答案 0 :(得分:2)

您不应将文本框直接绑定到数据库。因此,如果您没有使用实现INotifyPropertyChanged的ViewModel,而是直接绑定到linq2sql实体类,那么您做错了。

将您希望公开的属性包装到ViewModel中的UI中,然后在SubmitChanges()事件处理程序中调用PropertyChanged

当然,最好的方法是拥有一个“自然保存点”,例如,如果您有页面更改(如OneNote / Office)或保存按钮。

答案 1 :(得分:0)

这很正常。如果您希望每次更改属性时提交,您可以订阅对象的PropertyChanged事件,并手动调用SubmitChanges

但我不推荐它。为获得最佳效果,请覆盖页面的OnNavigatedFrom方法并在那里调用SubmitChanges