コードで作成している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