如何序列化在运行时设置源的图像控件?

时间:2012-04-19 13:49:02

标签: wpf serialization wpf-controls

我有一个包含多个控件的Grid,最重要的是三个图像控件。 我需要复制这个Grid。通过将XAML保存在MemoryStream中进行序列化似乎没有帮助,因为很明显,当我在运行时在代码中设置图像控件的源时,此更改不会反映在XAML设计器代码中。 [技术上它是,但是作为

<Image.Source> System.Windows.Interop.InteropBitmap</Image.Source>

我得到了一些奇怪的例外] 那么,我如何序列化我的Image控件呢? 更一般地说,我如何克隆我的网格控件以反映窗口加载后发生的对UI的任何更改?

1 个答案:

答案 0 :(得分: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;
        }
    }

以上功能是Arcturus