Я хочу скопировать сложную привязку данных UIElement
, но сохранить информацию о связывании, макете и рендеринге из исходного UIElement.
Создание нового UIElement
кажется неэффективным, поскольку мне пришлось бы сделать еще один полный проход Binding / Measure / Arrange / Render.
Самое близкое, что у меня есть, - это создать новыйDrawingVisual
, откройте его для рендеринга и DrawDrawing с использованием исходного 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
, который работает хорошо, но неосознанно из-за воссоздания идентичных элементов UIE.
Заранее спасибо, Пит