我有一个要打印的内容控件,默认情况下打印内容控件时它位于我的 A4 中间。
因此,我将 contentcontrol 的大小更改为 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 上看起来是正确的,但是在用户界面中,尺寸也会改变,我试图解决这个问题,因为它有负面影响。
内容控件位于第二行的网格中。调整大小后,它会在包含工具栏的第一行上移动。
<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>
我试图在打印后将其调整回原来的大小,但仍然在工具栏上移动。
还尝试在代码中定义第二个内容控件,复制内容并调整第二个内容控件的大小。但它似乎保留了对原始文件的引用,因为它仍在用户界面中调整大小。
有没有人指点我如何解决这个问题?
更新
设法以一种简单的方式修复它。通过仅使用大小调用排列,它将内容控件定位在 0,0。我还需要使用 X 和 Y 值调用 Arrange,以免在工具栏上移动。
最后,当调用打印时,我将大小调整为 A4 并打印,当打印完成时,我调整大小回到渲染大小并将其放置在工具栏下方并且它可以工作。