我需要复制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
s,我发现它需要花费很多时间。
有人知道如何更快地复制UIElement
吗?
答案 0 :(得分:0)
您可以在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();