2011-05-04 2 views
2

복잡한 데이터 바인딩 UIElement을 복사하고 원본 UIElement에서 바인딩, 레이아웃 및 렌더링 정보를 유지하려고합니다.UIElement를 복제하고 레이아웃/렌더링 정보를 유지하는 방법은 무엇입니까?

UIElement을 새로 만드는 것은 완전히 다른 바인딩/측정/정렬/렌더링 패스를 수행해야하므로 비효율적 인 것처럼 보입니다.

가장 가까운 대상은 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; 

복잡한 접근 방식 (예 : 국경 내 패널이 많은 경우, 맞춤형 컨트롤 등)은 복잡한 방식으로 작동합니까?

컨텍스트를 제공하기 위해 동일한 UIElements를 재 작성했기 때문에 DocumentPaginator이 잘 작동하지만 inefficeintintly 제작하고 있습니다. 사전에

감사합니다, 피트

답변

0

는 프리젠 테이션 목적으로 만 있다면, 당신은 VisualBrush를 사용할 수 있습니다. 자세한 내용은 here, herehere입니다. 그것은 첨부 된 영상에 대한 실시간 업데이트를 반영합니다.

+0

조언 해 주셔서 감사합니다. 그러나 제가 ** 붙박이 시각 효과에 ** 반영한 바로 그 이유 때문에 'VisualBrush'를 피하고 싶습니다. 독립적 인 '비주얼'을 만들기 위해 소스 'UIElement'정보 (시간 소비 레이아웃과 렌더링 정보)를 사용하는 새로운 'UIElement'(또는 'Visual')를 만들 수 있기를 바랍니다 ** SourceUIElement의 변경을 반영) – Peter

관련 문제