Я пытаюсь напечатать пользовательский элемент управления WPF, который я создаю в коде.Я делаю это с реализацией DocumentPaginator в конце поста.
Проблема, с которой я столкнулся, заключается в том, что класс DocumentPage не вызывает Loaded в моем UserControl, поэтому элемент управления не полностью отображается.Я не могу переместить код в 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; }
}
}