0

このページで詳しく説明されているプリンター機能を実装しましたが、 System.Windows.Printingの印刷動作にバグがあったと思います。次のように、レイアウトに画像を追加しました。

<Grid x:Name="documentRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="100" />
        <RowDefinition Height="25"/>
        <RowDefinition />
        <RowDefinition Height="25"/>
    </Grid.RowDefinitions>
    <Image x:Name="logo" Source="/MyProject;component/Image/logo.jpg" Grid.Row="0" Width="265" Height="51" HorizontalAlignment="Left" Margin="0,0,0,15" VerticalAlignment="Bottom" />
    <TextBlock x:Name="headerTextBlock" Grid.Row="1" HorizontalAlignment="Center" />
    <TextBlock x:Name="bodyTextBlock" Grid.Row="2" TextWrapping="Wrap" />
    <TextBlock x:Name="footerTextBlock" HorizontalAlignment="Center" Grid.Row="3"/>
</Grid>

このコードで何が起こるかというと、アプリケーションが開始されてから初めて複数のページを印刷する必要がある場合は常に、最初の2ページをスキップし、残りのページのみを印刷します。同じものをもう一度印刷しようとすると、期待どおりにページがきれいに印刷され、アプリケーションを再起動するまで永久に印刷されます。

追加されたRowDefinitionとは関係がないことに注意してください。これは、 Image要素を削除しようとしただけで、完全に正常に機能したためです。プリンターがおかしくなり始めるのは、UserControlにImage要素を配置したときだけです。

したがって、これは、Microsoftが何年にもわたって修正することのない、もう1つの「マイナーな」バグであると想定しています。たとえば、これは、初期の頃に苦労しなければならなかったPowershellのその他の機能しないフラグです。

そうは言っても、この問題について間違っていると言われたら嬉しいです。しかし、私がそうでない場合、誰かが回避策について何か考えを持っていますか?

4

1 に答える 1

1

私の問題の回避策を見つけました。このWebサイトを使用して画像ファイルをXAMLキャンバスに変換し、PrintPage.xamlファイルの画像の代わりにCanvasコード全体をコピーして貼り付けるとうまくいくようです。かなりひどいですが。知っている。

于 2013-02-06T14:40:45.343 に答える