【问题标题】:How to copy an UIElement fast?如何快速复制 UIElement?
【发布时间】:2018-11-03 20:04:00
【问题描述】:

我需要复制一个UIElement。 我搜索了一个解决方案,发现了这个例子:

string saved = XamlWriter.Save(canvas1); 
StringReader sReader = new StringReader(saved); 
XmlReader xReader = XmlReader.Create(sReader); 
Canvas newCanvas = (Canvas)XamlReader.Load(xReader); 
stackPanel2.Children.Add(newCanvas);

效果很好。 我的应用程序复制了一长串UIElements,我发现这需要很多时间。 有人知道如何更快地复制UIElements?

【问题讨论】:

    标签: c# wpf uielement


    【解决方案1】:

    您可以在 UIElement 上使用扩展方法:

    static class ExtMethods
    {
        public static T GetCopy<T>(this T element) where T : UIElement
        {
            using (var ms = new MemoryStream())
            {
                XamlWriter.Save(element, ms);
                ms.Seek(0, SeekOrigin.Begin);
                return (T)XamlReader.Load(ms);
            }
        }
    }
    

    用法

    Canvas copy = canvas1.GetCopy();
    

    【讨论】:

    • 这并不比 OP 的方法快。
    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多