打印包含图像的UserControl?

时间:2013-02-05 23:24:43

标签: silverlight xaml printing silverlight-4.0

我在this page上实现了详细的打印机功能,我想我偶然发现了 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>

此代码会发生的情况是,自应用程序启动以来第一次必须打印多个页面时,它将跳过前两页并仅打印其余页面。如果你再次尝试打印相同的东西,它将按照预期很好地打印页面,并永远打印,直到你重新启动应用程序。

请注意,它与添加的 RowDefinition 无关,因为我尝试删除图片元素,但它工作得很好。只有当我在我的UserControl中放入 Image 元素时,打印机才会开始疯狂。

所以我假设这是微软多年来无法解决的另一个“次要”错误,例如this one或Powershell中的其他一些非工作标志,我不得不与之斗争在我早期。

话虽这么说,但我很乐意在这个问题上被告知错误。但如果我不是,有没有人对解决方法有任何想法?

1 个答案:

答案 0 :(得分:1)

找到解决我的问题的方法:使用this website将图像文件转换为XAML Canvas,然后复制粘贴整个 Canvas 代码而不是 Image 在我的PrintPage.xaml文件中似乎可以解决问题。即使它非常可怕。我知道。