如何快速复制 UIElement?
Posted
技术标签:
【中文标题】如何快速复制 UIElement?【英文标题】:How to copy an UIElement fast? 【发布时间】: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);
效果很好。
我的应用程序复制了一长串UIElement
s,我发现这需要很多时间。
有人知道如何更快地复制UIElement
s?
【问题讨论】:
【参考方案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 的方法快。以上是关于如何快速复制 UIElement?的主要内容,如果未能解决你的问题,请参考以下文章
如何以相同的触摸在多个 UIElement 上触发 ManipulationStarted?
拖动某些东西时如何在 UIElement 周围显示一个简单的边框
Silverlight 4 - 将 UIElement 渲染为图像
如何让我的应用程序表现得像我正在使用 Swift 在运行时更改 Application is agent(UIElement)?