Printing 将usercontrol重新添加到主页面后生成PrintPreview
今天,我在打印uwp应用程序时遇到了一个新问题,即如果我删除并再次将usercontrol添加到主页中,则无法生成打印预览 我的场景:我有一个用户控件,其中有一个列表框,列表框中的项目是水平对齐的,但我希望以垂直方式每页打印两个项目 因此,我创建了另一个具有垂直对齐项的相同列表框,最初该列表框是隐藏的,然后在创建预览时,该列表框会显示一段时间 现在,这个问题是我第一次运行我的应用程序,然后它像一个魔咒一样工作,然后删除同一个usercontrol并再次添加它,这给我带来了一个问题,无法生成打印预览 我已经创建了一个复制此问题的精简示例 复制步骤: 运行应用程序 单击“加载联系人”按钮 点击打印按钮 观察:打开打印对话框并创建打印预览-正确 现在,取消打印过程以隐藏打印对话框 单击“清除”按钮以删除usercontrol 现在,重复从1到3的步骤 注意:这一次,打印预览没有创建错误Printing 将usercontrol重新添加到主页面后生成PrintPreview,printing,uwp,uwp-xaml,Printing,Uwp,Uwp Xaml,今天,我在打印uwp应用程序时遇到了一个新问题,即如果我删除并再次将usercontrol添加到主页中,则无法生成打印预览 我的场景:我有一个用户控件,其中有一个列表框,列表框中的项目是水平对齐的,但我希望以垂直方式每页打印两个项目 因此,我创建了另一个具有垂直对齐项的相同列表框,最初该列表框是隐藏的,然后在创建预览时,该列表框会显示一段时间 现在,这个问题是我第一次运行我的应用程序,然后它像一个魔咒一样工作,然后删除同一个usercontrol并再次添加它,这给我带来了一个问题,无法生成打印预
演示示例链接:在卸载事件中,当您将PrintManager设置为null时,您无法从中删除PrintManager.PrintTaskRequested事件。它将委托给实例方法,实例方法不能有null“this” 在将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);
}
}
请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。