Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 等待用户界面重新绘制,然后执行“重新绘制”;截图;它的 挑战_C#_.net_Wpf - Fatal编程技术网

C# 等待用户界面重新绘制,然后执行“重新绘制”;截图;它的 挑战

C# 等待用户界面重新绘制,然后执行“重新绘制”;截图;它的 挑战,c#,.net,wpf,C#,.net,Wpf,我正在尝试创建一个窗口,在PDF文档的页面上绘制一张卡片 我们的想法是接收一个集合(应该在卡片上绘制的项目),然后遍历它们,对于每个项目,将其加载到一个UniformGrid(给人一个实际卡片的印象),捕获屏幕的图像并将其绘制到一个PDF文档页面 到目前为止还不错 我所尝试的(并且部分成功) 以下是我尝试过的: (以下代码已添加到窗口的加载的事件处理程序中) 可以找到一个完整的(但很短,我保证)工作示例 此外,还可以找到生成的PDF(调试时和未调试时-请参阅下面的问题) 问题 上述代码在调试模式

我正在尝试创建一个窗口,在PDF文档的页面上绘制一张卡片

我们的想法是接收一个
集合
(应该在卡片上绘制的项目),然后遍历它们,对于每个项目,将其加载到一个
UniformGrid
(给人一个实际卡片的印象),捕获屏幕的图像并将其绘制到一个PDF文档页面

到目前为止还不错

我所尝试的(并且部分成功) 以下是我尝试过的:

(以下代码已添加到窗口的
加载的
事件处理程序中)

可以找到一个完整的(但很短,我保证)工作示例 此外,还可以找到生成的PDF(调试时和未调试时-请参阅下面的问题)

问题 上述代码在调试模式下运行良好

  • 调试时:代码运行时没有错误,PDF的页数正确,卡片正确绘制

  • 如果不是:代码运行时没有错误,PDF将使用正确的页数创建,但不会在其上绘制卡片


我认为导致问题的原因是以下代码段上的
DispatcherPriority.ContextIdle

Dispatcher.Invoke(new Action(() =>
{
    PdfHelper.DrawPictureOfControlToPdf(document, this);

}), DispatcherPriority.ContextIdle, null);
它应该指示
操作
只能在
UniformGrid
完成重绘时运行(更准确地说,是在调度器处理之后)。但显然,这只在调试模式下起作用

有人知道如何解决这个问题吗

如果没有,有没有其他我没有想到的选择

@编辑


我认为这并不重要,但我正在使用生成/处理PDF删除所有
调度程序。在代码中调用
(他们在这里做得不好),然后调用

this.UpdateLayout();
在调用
PdfHelper.DrawPictureOfControlToPdf(文档,this)之前,强制重画当前控件

this.UpdateLayout();