我刚读了这个问题: How to cancel an edit to an object using 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");
}
}
}
玩家绑定到数据网格,CurrentPlayer到了selectedItem属性。在数据网格下面,我有文本框,用户可以在其中编辑播放器信息。
当用户按下保存按钮,该代码被执行:
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生成的实体类。
不要使用EF实体,因为您的视图模型将成为我的第一个建议。 –
我不会那样做...... – Bv202
然后,你需要在你用它来检索和存储数据真的不应该不管你在虚拟机中的视图模型视图绑定到一个取消机制方面的机制,你的问题扩大。你有没有做你在做什么的例子,以及为什么在这种情况下使用EF是一个障碍? –