尝试在SL4中实现简单打印。我有一个我想要打印出来的DataGrid,但到目前为止,我尝试打印的内容都是打印机中的空白页。实际打印似乎需要大约30-60秒(但这可能是一个无关的问题)。
我的代码相当简单:
private void MenuPrint_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
PrintDocument document = new PrintDocument();
document.PrintPage += (s, args) =>
{
args.PageVisual = this.MainDataGrid;
// args.PageVisual = this.LayoutRoot;
};
// Print
document.Print("Test Print Job");
}
我甚至想知道是不是因为物品太大了?
MainDataGrid控件的XAML也很简单:
<sdk:DataGrid Grid.Row="3" AutoGenerateColumns="True" Name="MainDataGrid" FontSize="10" Visibility="Visible" />
答案 0 :(得分:0)
我可以在您的示例和MSDN之间看到的唯一区别是您正在为PrintPage
事件处理程序使用匿名方法。您是否尝试处理EndPrint
事件以检查错误?
答案 1 :(得分:0)
事实证明,这与PC有关,而不是代码问题。无论出于何种原因,相同的代码今天开始工作(在机器重启后)。
还有一个问题是Silverlight界面在打印过程中确实会挂起大约30-60秒,但它最终会释放并打印./
答案 2 :(得分:0)
在某些打印机上发送大量数据时Silverlight 4打印存在问题,我还没有看到对此问题的一个很好的解释,但这里有一些链接可以解决这个问题。
http://forums.silverlight.net/t/206048.aspx/1?PrintDocument+sends+extreme+amounts+of+data+to+printer