我正在使用PrintDialog.PrintVisual()来打印我的viewmodel。为此,我在字典上使用绑定:
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="329" Height="204">
<Image Source="{Binding Details.Properties[Imagedata].ImageStream}" Stretch="Fill" Width="95" Height="122" Canvas.Left="14" Canvas.Top="41"/>
<Image Source="{Binding Details.Properties[Signature].ImageStream}" Stretch="Fill" Height="25" Width="100" Canvas.Left="122" Canvas.Top="143"/>
</Canvas>
如果我把这个Canvas放在我的WPF窗口上,它显示正常。但是如果我想要打印它,它会使用我第二张图像上的第一张图像。在调试器中,我在UpdateLayout之后检查了Image.Source - 两者都是正确的。下一步是PrintDialog.Printvisual(canvas, "print");
输出如上所述,但每次都不一样。有时第一张图像甚至会在第二张Image
中重复。
为什么会这样?
更新:我找到了一种解决方法:我搜索所有Image
个元素,将ImageSource
复制到MemoryStream
并创建一个新的BitmapImage
出来的。这不好,但它现在正常工作。如果有人能够解释,为什么会这样,那就太好了。