2013-03-20 33 views
0

我是Silverlight的新手,我已經爲我的公司創建了一個GIS Web應用程序的打印預覽模板。我的要求如下:在silverlight/xaml中打印預覽

1)當我對我的炫魅打印預覽按鈕,單擊它將會彈出一個新的打印預覽窗口 2)預覽窗口應該有炫魅內容 3)它應該有一個打印按鈕打印它。 4)它應該有一個頁面,前一頁選項 5)縮放圖標/滑塊放大和縮小預覽內容

高達現在我剛加入我的炫魅的預覽按鈕,在點擊打開一個新的xaml窗口,並在該窗口中設置了像這樣的內容。

這裏是PrintPreview.xaml 的觀點

<Grid x:Name="LayoutRoot" Background="White"> 
    <Canvas x:Name="m_canvas" Height="490" VerticalAlignment="Top" Margin="0,0,60,0"> 

     <Button x:Name="m_btn_print" Canvas.Top="5" Canvas.Left="5" Width="32" Height="32" Click="m_btn_print_Click"> 
      <Image Source="Images/print.png" Stretch="Fill" /> 
      <ToolTipService.ToolTip> 
       <ToolTip Content="Print"></ToolTip> 
      </ToolTipService.ToolTip> 
     </Button> 

     <Button x:Name="m_btn_prev_page" Canvas.Top="5" Canvas.Left="45" Width="32" Height="32" Click="m_btn_prev_page_Click"> 
      <Image Source="Images/arrow.left.png" Stretch="Fill"/> 
      <ToolTipService.ToolTip> 
       <ToolTip Content="Previous Page"></ToolTip> 
      </ToolTipService.ToolTip> 
     </Button> 

     <Button x:Name="m_btn_next_page" Canvas.Top="5" Canvas.Left="85" Width="32" Height="32" Click="m_btn_next_page_Click"> 
      <Image Source="Images/arrow.right.png" Stretch="Fill"/> 
      <ToolTipService.ToolTip> 
       <ToolTip Content="Next Page"></ToolTip> 
      </ToolTipService.ToolTip> 
     </Button> 

     <Slider x:Name="m_sld_size" Minimum="50" Maximum="125" Value="100" SmallChange="5" LargeChange="5" ValueChanged="m_sld_size_ValueChanged" 
        Canvas.Top="15" Canvas.Left="245" VerticalAlignment="Top" HorizontalAlignment="Right" Width="80" /> 

     <TextBlock x:Name="m_lbl_size" Canvas.Top="2" Canvas.Left="265" FontSize="9" Text="Zoom" Foreground="Black" /> 

     <Canvas x:Name="m_canvas_print" Canvas.Top="40" Canvas.Left="5" Width="317" Height="445" Background="White" 
      VerticalAlignment="Top" HorizontalAlignment="Left"> 
     </Canvas> 


    </Canvas> 
</Grid> 

現在什麼應該是我後面的代碼,我應該如何表現這個預覽MainPage.xaml中的內容。請幫忙它的緊急

在此先感謝。

+0

你有什麼試過?它包括谷歌搜索'Silverlight打印'?第三個結果是這樣的:http://www.silverlightshow.net/items/Advanced-printing-in-Silverlight-4.aspx – 2013-03-20 07:28:56

回答

1

我的建議第一個詞是不使用畫布對象,除非你用每次打印時都一樣的東西來填充它。如果要打印的動態數據值可以根據打印時間進行更改,我將移動到堆棧面板或網格。

這就是說,當用戶按下打印按鈕時,您需要連接打印功能以打印m_cavas_print對象。我在下面添加了一些示例打印代碼。

PrintDocument pd = new PrintDocument(); 

    pd.PrintPage += (s, e) => 
    { 
     e.PageVisual = m_cavas_print; 
    }; 

    pd.Print("MainPageContent"); 

這是打印背後的基本原理。你可以把它放在你的打印按鈕單擊事件處理程序中,它將打印畫布中的任何內容。我在這裏使用了lambda表達式來處理打印頁面事件,但您也可以使用單獨的方法。

+0

我知道打印,我想打印預覽,thanx反正,當我試圖把它放在我的打印單擊按鈕事件中它的顯示錯誤: '錯誤名爲'e'的局部變量不能在此範圍內聲明,因爲它會給'e'賦予不同的含義,'e'已用於'父母或當前'範圍表示其他' – 2013-03-23 15:24:58

+0

我們使用單獨的子窗口進行預覽,並將頁面的格式設置爲要打印的紙張大小。我們在打印頁面上有完整標記,並將數據對象傳遞給視圖模型以供打印頁面顯示。至於e只是改變它參數或類似的東西。 – RKaufman 2013-04-08 21:17:57