1

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

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

我得到了一些奇怪的异常] 那么,我怎样才能序列化我的 Image 控件?更一般地说,我如何克隆我的 Grid 控件以反映加载窗口后对 UI 的任何更改?

4

1 回答 1

0

如果我正确理解了您的问题,我认为您只需要在运行时创建网格的克隆。如果是这样,请查看这些线程 如何克隆 WPF 对象?

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;
        }
    }

上述功能是由大角星

于 2012-11-10T09:06:36.973 回答