0

印刷したいコンテンツ コントロールがあります。デフォルトでコンテンツ コントロールを印刷すると、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 にサイズ変更して印刷します。印刷が終了すると、サイズ変更はレンダリングされたサイズに戻り、ツールバーの下に配置すると機能します。

4

0 に答える 0