2017-07-16 57 views
1

在我的应用程序中,我管理人员信息,我有一个listBox显示人员列表和三个按钮添加/编辑/删除,当我选择行并按编辑按钮时,应用程序打开一个新窗口个人信息并保存到某个数据库表(ModifyCheck)中,如果其他用户试图编辑它,则此人正在修改它。在这个人窗口中,我有两个按钮(保存/取消)。这个窗口中的所有控件都与对象属性绑定,当我进行一些修改并按下保存时,我应该从(ModifyCheck)中删除该行。保存WPF中的一个对象的更改

的问题是:

如果我打开窗户的人并修改了一些资料,然后按取消,我会用SaveChange更新ModifyCheck表。在这种情况下,我修改的所有信息都会更新,但我按下了取消。

如何仅将SaveChanges()用于ModifyCheck?

回答

0

不要将实体属性直接绑定到控件。创建一个具有相同属性的视图模型,将它们绑定到控件。当用户进行一些更改时,它将修改viewModel的属性,而不是您的实体。如果用户按下保存按钮,则必须更新实体的字段。如果用户按下取消,实体将不会发生任何事情。

为简单起见,假设您有一个WinForms应用程序。每个TextBox控件都有一个名称。当用户按下保存按钮,你将指派它的价值实体:

person.FirstName = textBoxFirstName.Text; 
db.SaveChanges(); 

否则将关闭该窗口并没有什么会改变person

+0

感谢您的回答,能不能请您指导我如何使用视图模型详细? –

+0

如果您不知道MVVM模式以及它在WPF中的用法,则不能只使用ViewModel。这里是相关话题,MVVP教程:https://stackoverflow.com/questions/1405739/mvvm-tutorial-from-start-to-finish – opewix

+0

@AbdulsalamElsharif MVVM可能过于复杂的话题在这里。你只需要理解一件事,在用户按下Save按钮之前不要修改实体字段。 – opewix

相关问题