2

我希望复制复杂的数据绑定UIElement,但保留原始 UIElement 中的绑定、布局和渲染信息。

创建一个新的UIElement似乎效率低下,因为我必须做另一个完整的绑定/测量/排列/渲染通道。

到目前为止,我最接近的是创建一个新的DrawingVisual,打开它进行渲染,并使用源 UIElement 进行 DrawDrawing DrawingGroup

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 而效率低下。

在此先感谢,皮特

4

1 回答 1

0

如果仅用于演示目的,则可以使用VisualBrush。可以在此处此处此处找到更多信息。它甚至反映了对附加视觉对象所做的任何实时更新。

于 2011-05-05T00:49:50.980 回答