2012-04-19 4 views
1

私はいくつかのコントロールを含むグリッドを持っています。最も重要なものは3つのイメージコントロールです。 このグリッドの複製を作成する必要があります。 MemoryStreamにXAMLを保存してシリアル化すると、ランタイムにコード内のImage Controlのソースを設定すると、この変更がXAMLデザイナーコードに反映されないため、明らかに役に立たないようです。 [技術的にそれはあるが、実行時にソースが設定されているイメージコントロールをシリアル化する方法は?

<Image.Source> System.Windows.Interop.InteropBitmap</Image.Source> 
として

と私はいくつかの奇妙な例外を取得]どのように私は私のImageコントロールをシリアル化することができ、そう を? さらに一般的には、ウィンドウのロード後に発生したUIの変更を反映するために、グリッドコントロールをクローンする方法はありますか?

答えて

0

質問を正しく理解していれば、実行時にグリッドのクローンを作成するだけで済みます。ので、これらのスレッドで How can you clone a WPF object?

http://social.msdn.microsoft.com/Forums/en-HK/wpf/thread/e1a63ed2-a432-4c46-8f3b-4f172702cd7c

を見てみる場合は

public static T DeepClone<T>(T from) 
    { 
     using (MemoryStream s = new MemoryStream()) 
     { 
      BinaryFormatter f = new BinaryFormatter(); 
      f.Serialize(s, from); 
      s.Position = 0; 
      object clone = f.Deserialize(s); 

      return (T)clone; 
     } 
    } 

機能上のオブジェクトのクローンを作成するにはこの機能を使用して、これは `SerializationException`を提起Arcturus

+0

でいました。 'Grid'は直列化可能とマークされていません。 – mbyamukama