2012-11-29 91 views
0
  1. 在Silverlight 4.0中創建Binding對象的完整獨立副本需要什麼?
  2. 僅僅複製其每一個可設置的屬性就足夠了嗎?

UPDATE如何克隆Silverlight中的Binding對象?

至於我能看到答案的第二個問題是NO。因爲在綁定上設置屬性會觸發它的狀態,一旦初始化就無法更改。例如,雖然沒有任何東西可以阻止你設置Source和RelativeSource屬性,但是在運行時你會得到一個異常,因爲一旦Source屬性被設置,你就不能再設置RelativeSource。與ElementName屬性相同的東西,即使默認情況下它已經保存爲NULL,也不能分配給NULL。

回答

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); 
    } 
} 
+0

System.Windows.Data的Binding類是POCO類嗎? –

+0

我們使用上面的函數克隆從我們的WCF服務返回的數據合同POCO對象。請參閱http://stackoverflow.com/questions/250001/poco-definition。 –

+0

我不是在問克隆POCO的問題,但是無論如何感謝。 –