Как скопировать UIElement и сохранить информацию о макете / рендере? - PullRequest
2 голосов
/ 05 мая 2011

Я хочу скопировать сложную привязку данных 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.

Заранее спасибо, Пит

1 Ответ

0 голосов
/ 05 мая 2011

Если это только для презентационных целей, вы можете использовать VisualBrush .Более подробную информацию можно найти здесь , здесь и здесь .Он даже отражает любые обновления в реальном времени, сделанные для прикрепленного изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...