今天,我在打印uwp应用程序时遇到了一个新问题,如果我删除然后再将我的usercontrol添加到主页面中,则无法生成打印预览。
我的场景:我有一个用户控件,其中我有一个列表框,其项目是水平对齐的,但我想以垂直方式打印这些项目(每页2个项目)。
所以,我创建了另一个带有垂直对齐项目的同一个列表框,最初隐藏了这个列表框,然后在创建预览时,这个列表框会显示一段时间。
现在,问题是第一次运行我的应用程序然后它就像一个魅力,然后删除相同的用户控件并再次添加它是为我创建一个问题,无法生成打印预览。 / p>
我创建了一个复制此问题的精简样本。
重现的步骤:
运行该应用程序。
点击"加载联系人"按钮
点击"打印"按钮
观察:打开打印对话框并创建打印预览 - 正确
现在,取消打印过程以隐藏打印对话框
点击"清除"按钮删除用户控件
现在,重复步骤1到3
观察:这次,未创建打印预览----不正确
答案 0 :(得分:1)
在Unloaded事件中,当您将null
设置为PrintManager
时,无法从中删除PrintManager.PrintTaskRequested事件。它会将" Delegate抛给一个实例方法,不能为null'这个'。"
在将PrintManager
设置为null之前,您应该能够删除PrintManager.PrintTaskRequested事件。
例如:
private void ContactsUserControl_Unloaded(object sender, RoutedEventArgs e)
{
try
{
printMan.PrintTaskRequested -= PrintTaskRequested;
printMan = null;
printDocSource = null;
printDoc.Paginate -= Paginate;
printDoc.GetPreviewPage -= GetPreviewPage;
printDoc.AddPages -= PrintDoc_AddPages;
printDoc = null;
GC.Collect();
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}