如何在Silverlight中克隆Binding对象?

时间:2012-11-29 20:42:04

标签: c# silverlight xaml data-binding

  1. 在Silverlight 4.0中制作Binding对象的完整单独副本有什么必要?
  2. 仅仅复制其每一个可设置的属性是否足够?
  3. 更新

    据我所知,第二个问题的答案是否定的。因为绑定上的设置属性会触发它的状态,一旦初始化就无法更改。例如,虽然没有什么可以阻止您设置Source和RelativeSource属性,但是在运行时会出现异常,因为一旦设置了Source属性,就不能再设置RelativeSource了。与ElementName属性相同的是,即使默认情况下它已经保持为NULL,也无法将其指定为NULL。

1 个答案:

答案 0 :(得分:0)

您是否尝试在Silverlight中克隆POCO对象?如果是这样,你可以实现这样的东西:

public static T Clone<T>(T source)
{

    DataContractSerializer serializer = new DataContractSerializer(typeof(T));
    using (MemoryStream ms = new MemoryStream())
    {
        serializer.WriteObject(ms, source);
        ms.Seek(0, SeekOrigin.Begin);
        return (T)serializer.ReadObject(ms);
    }
}