2011-05-04 62 views
2

我希望複製一個複雜的數據綁定UIElement,但保留來自原始UIElement的Binding,Layout和Rendering信息。如何複製UIElement並保留佈局/渲染信息?

創建一個新的UIElement似乎效率低下,因爲我不得不做另一個完整的Binding/Measure/Arrange/Render傳遞。

到目前爲止,我得到的最接近的是創建一個新的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; 

這是一個很好的方法,它會爲(內邊框例如大量的面板,定製控件等等等等),複雜的UI元素的工作?

爲了給你一個上下文,我製作了一個DocumentPaginator,它運行良好,但由於相同的UIElements的娛樂而無法使用。

由於提前, 皮特

回答

0

如果它只是用於演示的目的,你可以使用一個VisualBrush。更多信息可以參見hereherehere。它甚至反映了對附件視覺進行的任何實時更新。

+0

感謝您的建議,但我想避免'VisualBrush'的原因,它**確實**反映了所附的視覺變化。我希望能夠創建一個新的'UIElement'(或'Visual'),它使用Source'UIElement'信息(計時佈局和渲染信息)來創建一個獨立的'Visual'(**不**反映SourceUIElement的變化) – Peter 2011-05-05 01:17:44