印刷したいコンテンツ コントロールがあります。デフォルトでコンテンツ コントロールを印刷すると、A4 の真ん中に表示されます。
したがって、次の方法で印刷するために、コンテンツ コントロールのサイズを A4 のサイズに変更しました。
printControl.Measure(new Size(816, 1056));
printControl.Arrange(new Rect(new Size(816, 1056)));
printControl.UpdateLayout();
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
dialog.PrintVisual(printControl, sTitle);
}
これは私が望むものを達成し、印刷するとA4で正しく見えますが、ユーザーインターフェイスではサイズも変更され、悪影響があるため、それを回避しようとします.
コンテンツ コントロールは、2 行目のグリッドにあります。サイズを変更した後、ツールバーを含む最初の行に移動します。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ToolBar ToolBarTray.IsLocked="True" Grid.Row="0">
//toolbar stuff here
</ToolBar>
<ContentControl Name="printControl" Grid.Row="1"></ContentControl>
</Grid>
印刷後に元のサイズにサイズ変更しようとしましたが、ツールバー上に移動したままです。
また、コードで 2 番目のコンテンツ コントロールを定義し、コンテンツをコピーして、2 番目のコンテンツ コントロールのサイズを変更しようとしました。ただし、ユーザーインターフェイスでサイズが変更されるため、元のものへの参照が保持されているようです。
これを解決する方法を教えてくれる人はいますか?
アップデート
簡単な方法で修正できました。サイズのみで Arrange を呼び出すと、コンテンツ コントロールが 0,0 に配置されます。ツールバーを移動しないようにするには、X と Y の値を指定して Arrange を呼び出す必要がありました。
最後に、印刷が呼び出されると、A4 にサイズ変更して印刷します。印刷が終了すると、サイズ変更はレンダリングされたサイズに戻り、ツールバーの下に配置すると機能します。