如何快速复制UIElement?



我需要复制一个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);

它工作得很好。 我的应用程序复制了一长串UIElement,我发现这需要很多时间。 有人知道如何更快地复制UIElement吗?

您可以在 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();

最新更新