打印预览在silverlight/xaml



我是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表达式来处理打印页面事件,但您也可以使用单独的方法。

相关内容

  • 没有找到相关文章

最新更新