2016-08-13 71 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