0

我是 Silverlight 的新手,我的任务是为我公司的 GIS Web 应用程序创建打印预览模板。我的要求如下:

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 内容。请帮助其紧急

提前致谢。

4

1 回答 1

1

我的第一条建议是不要使用画布对象,除非您每次打印时都使用相同的东西归档它。如果您正在打印可以根据打印时间更改的动态数据值,我将移动到堆栈面板或网格。

话虽如此,当用户按下打印按钮时,您需要连接打印功能以打印 m_cavas_print 对象。我在下面添加了一些示例打印代码。

    PrintDocument pd = new PrintDocument();

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

    pd.Print("MainPageContent");

这是印刷背后的基本原理。您可以将它放在您的打印按钮单击事件处理程序中,它将打印画布中的任何内容。我在这里使用了 lambda 表达式来处理打印页面事件,但您也可以使用单独的方法。

于 2013-03-21T19:56:01.813 回答