2016-08-13 40 views
1

我正在寻找打印C#/ WPF程序用户输入的数据的方法。 问题是与PDF相比较的屏幕的布局差异。用不同的布局WPF到PDF

程序布局是为不同于pdf文件布局(portret视图)的显示(横向视图)而制作的。

这里是网格的与标签,文本框,单选按钮和复选框一个PRINTSCREEN:

printscreen of grid with labels, textboxes, radiobuttons and checkboxes ,因为它是在应用程序中所示。 所有标签,文本框,单选按钮和复选框都绘制在网格上。

这里是pdf如何看起来像一个打印屏幕。

PDF portret view example

所以我不只是在寻找一种方式来复制电网PDF而且还改变布局。

回答

0

有两种方法:

  1. 返工你的用户界面,使其更流畅,并可以在(几乎)任何决议或屏幕比例工作,这样你就可以只需直接渲染视图。如果您使用WrapPanel(例如),那么控件将自动布局以适应屏幕截图。

  2. 如果这是不可能的,你可以创建一个“打印视图”,它将以纵向模式而不是横向模式布置控件。这将绑定到与常规视图相同的视图模型,因此所有数据都是正确的。然后您可以在“打印”命令中渲染该视图。该视图的定义方式与“正常”视图相同,但打印时使用该视图而不是“正常”视图。

如果你把每个问题和答案(S)在网格或堆叠面板,那么你可以铺陈的问题是这样的:

<WrapPanel Orientation="Vertical"> 
    <StackPanel x:Name="Question1"> 
     ... Controls for question 1 
    </StackPanel> 
    <StackPanel x:Name="Question2"> 
     ... Controls for question 2 
    </StackPanel> 
    ... 
</WrapPanel> 

这将出打好页列,高度是可用的垂直空间。

如果您更改为“水平”,您将得到按行排列的问题。

+0

亲爱的ChrisF,我是WPF的新手,所以我真的可以使用你的帮助。你能否给我一个小例子,说明如何创建“打印视图”,该视图将以纵向模式布置的控件与常规视图绑定,以及如何在“打印命令”中呈现该视图? – MathiasF

+0

@MathiasF给你的实际页面,我会去'包装面板'。这样视图会在用打印尺寸进行渲染时自行排列。 – ChrisF

+0

我该怎么做?我是否应该将每个问题的答案放在wrappanel中,并将所有这些wrappanels放在antoher wrappanel中?如何使用wrappanel保留问题之间的空白?如何在使用wrappanel的问题和答案之前保留问题编号? – MathiasF