我刚刚阅读了这个问题: 如何使用 MVVM 取消对对象的编辑?
我有完全相同的问题,并希望有一个简单的解决方案。第一个看起来很有希望,但是,我正在使用实体框架并且我的类是自动生成的,所以这不是一个选项。
如何使用 EF 轻松做到这一点?
编辑:我的视图模型:
public List<Player> Players
{
get { return repository.Players.OrderBy(x => x.Firstname).ToList(); }
}
public Player CurrentPlayer
{
get { return currentPlayer; }
set
{
if (currentPlayer != value)
{
currentPlayer = value;
RaisePropertyChanged("CurrentPlayer");
}
}
}
Players 绑定到一个数据网格,CurrentPlayer 绑定到该选定项。在数据网格下方,我有文本框,用户可以在其中编辑玩家信息。
当用户按下保存按钮时,将执行以下代码:
private void SaveExecute(object parameter)
{
repository.SavePlayer(currentPlayer);
Editing = false;
}
很容易。当用户按下取消按钮时,执行以下操作:
private void CancelExecute(object parameter)
{
if (currentPlayer.Id == 0) // id = 0 when a new player is being added
{
CurrentPlayer = null;
}
else
{
// here, the CurrentPlayer should be set back to it's previous state.
}
Editing = false;
}
CurrentPlayer 是 Player 的一个对象,是 EF 生成的实体类。