我是Silverlight的新手,我给了我一个任务,为我的公司创建一个GIS Web应用程序的打印预览模板。我的要求如下:
1)当我点击我的主页上的打印预览按钮,它应该弹出一个新的打印预览窗口2)预览窗口应该有主页内容它应该有一个打印按钮来打印它。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>
现在应该是我的代码后面,我应该如何显示主页。Xaml内容在此预览。急事请帮忙
我的第一个建议是不要使用画布对象,除非您将其归档为每次打印时都相同的东西。如果您正在打印动态数据值,可以根据打印时间更改,我会移动到堆栈面板或网格。
也就是说,您需要连接打印函数,以便在用户按下打印按钮时打印m_cavas_print对象。我在下面添加了一些示例打印代码。
PrintDocument pd = new PrintDocument();
pd.PrintPage += (s, e) =>
{
e.PageVisual = m_cavas_print;
};
pd.Print("MainPageContent");
这是打印的基本原理。你可以把它放在print button click事件处理程序中它会打印画布上的任何东西。我在这里使用lambda表达式来处理打印页面事件,但您也可以使用单独的方法。