【发布时间】:2011-08-18 22:02:08
【问题描述】:
我希望复制一个复杂的数据绑定UIElement,但保留原始 UIElement 的绑定、布局和渲染信息。
创建一个新的UIElement 似乎效率低下,因为我必须执行另一个完整的绑定/测量/排列/渲染通道。
到目前为止,我最接近的是创建一个新的DrawingVisual,打开它进行渲染,然后使用源 UIElement DrawingGroup 进行 DrawDrawing。
DrawingVisual dv = new DrawingVisual();
DrawingGroup dg = VisualTreeHelper.GetDrawing(SourceElement);
using (DrawingContext dc = dv.RenderOpen())
{
Drawing d = dg.Children[0];
dc.DrawDrawing(d);
}
return dv;
这是一种好方法吗?它是否适用于复杂的 UIElement(例如,边框内的大量面板、自定义控件等)?
为了给你一个背景,我正在制作一个DocumentPaginator,它运行良好,但由于重新创建了相同的 UIElement 而效率低下。
提前致谢, 皮特
【问题讨论】: