코드에서 작성중인 WPF UserControl을 인쇄하려고합니다. 게시물 끝에있는 DocumentPaginator 구현으로이 작업을 수행하고 있습니다.렌더링을 위해 OnLoaded를 사용하는 UserControl 인쇄
내가 가지고있는 문제는 컨트롤이 완전히 렌더링되지 않도록 DocumentPage 클래스가 내 UserControl에 Loaded를 호출하지 않는다는 것입니다. 필자는 컨트롤의 관리자가 아니기 때문에 OnLoaded의 코드를 더 나은 위치로 옮길 수 없습니다.
컨트롤에서 Loaded 이벤트를 발생시키는 올바른 방법은 무엇입니까? 컨트롤이 PresentationSource에 연결될 때만 이벤트가 발생하지만 화면의 내용을 표시하지 않고 인쇄 작업을 보냅니다. 아마도 Visibility = Hidden 어딘가에 컨트롤을 렌더링 할 수는 있지만 값 싸고 해킹이 느껴집니다.
class MyPaginator : DocumentPaginator
{
public MyPaginator()
{
PageSize = new Size(800, 600);
}
public override DocumentPage GetPage(int pageNumber)
{
var uc = new ChartUC();
uc.Measure(PageSize);
uc.Arrange(new Rect(PageSize));
uc.UpdateLayout();
return new DocumentPage(uc, PageSize, new Rect(PageSize), new Rect(PageSize));
}
public override bool IsPageCountValid
{
get { return true; }
}
public override int PageCount
{
get { return 1; }
}
public override System.Windows.Size PageSize
{
get;
set;
}
public override IDocumentPaginatorSource Source
{
get { return null; }
}
}
정확히 같은 문제가 있습니다. 해결책을 찾았습니까? – l33t