【问题标题】:Print Preview in silverlight/xamlSilverlight/xaml 中的打印预览
【发布时间】:2013-03-20 05:41:23
【问题描述】:

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

提前致谢。

【问题讨论】:

标签: silverlight xaml printing print-preview


【解决方案1】:

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

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

    PrintDocument pd = new PrintDocument();

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

    pd.Print("MainPageContent");

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

【讨论】:

  • 我知道打印,我想要打印预览,thanx 无论如何,当我试图把它放在我的打印点击按钮事件中时它显示错误:'错误 1 ​​一个名为'e'的局部变量不能在这个范围内声明,因为它会给'e'赋予不同的含义,它已经在'父或当前'范围内用于表示其他东西'
  • 我们使用单独的子窗口进行预览,并将页面格式化为您正在打印的纸张大小。我们在打印页面上进行了完整标记,并将数据对象传递给打印页面的视图模型进行显示。至于 e 只需将其更改为 args 或类似的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多