使用Silverlight MVVM存储表单的原始值

时间:2011-11-22 13:45:30

标签: silverlight mvvm

我在存储表单的原始值时遇到问题。

我有一个包含多个文本框的表单。所有这些文本框都与单个实体绑定。 对于例如

Class Car
{
     private int Light;
     private int TailLight;
     private int Seats;
     private int Gears;

} 

现在一个文本框将与Light绑定,一个与TailLight绑定,依此类推。

在页面加载时,这些文本框中填充了一些值,用户可以选择编辑这些文本框并保存数据。在保存这些数据之前,我需要使用编辑的值检查OriginalValues(在页面加载上)。我无法找到将这些原始值存储在任何地方的方法。无论我在哪里保存原始值,数据都会在最后更改为编辑后的值,我明白这是因为我们正在提供参考。

任何人都可以建议解决这个问题的方法......

2 个答案:

答案 0 :(得分:1)

当您使用MVVM时,答案非常简单:用户界面可以编辑的临时值驻留在视图模型中,原始值保留在模型中。当用户保存更改时,视图模型中的当前值将传输到模型中。

答案 1 :(得分:1)

即使经过不同方式的试验和错误,我也找不到办法做到这一点。

所以我使用DeepCopy做了同样的事情,即Seralizing和Deseralizing ..

 // Deep clone     
        public static T DeepCopy<T>(this T a)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                DataContractSerializer formatter = new DataContractSerializer(typeof(T));
                formatter.WriteObject(stream, a);
                stream.Position = 0;
                return (T)formatter.ReadObject(stream);

            }
        }

希望这能帮到别人..