gpt4 book ai didi

c# - 如何复制克隆 UIElement 并保留布局/渲染信息?

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:14 26 4
gpt4 key购买 nike

我希望复制一个复杂的数据绑定(bind) UIElement 但保留原始 UIElement 的绑定(bind)、布局和呈现信息。

创建一个新的 UIElement 似乎效率不高,因为我必须再做一次完整的 Binding/Measure/Arrange/Render pass。

到目前为止,我最接近的是创建一个新的 DrawingVisual,打开它进行渲染,然后使用源 UIElement 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 而效率低下。

提前致谢,皮特

最佳答案

如果仅用于展示目的,您可以使用 VisualBrush .可以找到更多信息here , here , 和 here .它甚至反射(reflect)了对附加视觉对象所做的任何实时更新。

关于c# - 如何复制克隆 UIElement 并保留布局/渲染信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com