C# WPF Documentviewer仅在鼠标输入时正确更新文档

C# WPF Documentviewer仅在鼠标输入时正确更新文档,c#,wpf,documentviewer,C#,Wpf,Documentviewer,我对documentviewer控件有一个非常具体的问题。让我解释一下: 我有一个documentviewer,默认情况下它位于我的数据表示之上的不可见网格中。 当我按下特定按钮(生成报告,绑定到viewmodel上的命令)时,会生成documentviewer(固定页面等)的报告和xps文档,并且documentviewer网格设置为可见。 到现在为止,一直都还不错。奇怪的是,我的问题的根源是,当通过触摸屏上的触摸输入按下按钮时,一切都正常工作,显示正常 当通过鼠标按下时,命令会启动,docu

我对documentviewer控件有一个非常具体的问题。让我解释一下:

我有一个documentviewer,默认情况下它位于我的数据表示之上的不可见网格中。 当我按下特定按钮(生成报告,绑定到viewmodel上的命令)时,会生成documentviewer(固定页面等)的报告和xps文档,并且documentviewer网格设置为可见。 到现在为止,一直都还不错。奇怪的是,我的问题的根源是,当通过触摸屏上的触摸输入按下按钮时,一切都正常工作,显示正常

当通过鼠标按下时,命令会启动,documentviewer会显示,但文档会显示得乱七八糟。表格乱七八糟,自定义控件大小不正确等。 一旦光标移动到文档中或单击documentviewer中的区域,所有内容都将对齐并正确显示

我怀疑触摸和点击之间的区别在于对控件的关注,并尝试了在控件可见时手动更新布局的各种方法。没有成功

另外:My XPS文档包含一个布局,其中包含在触发generate report命令时生成的用户控件和网格。有趣的是,只有当页面上有多个元素时,用户控件的缩放才会崩溃

编辑:对可见性的更改完全无效。当documentviewer始终可见并且其绑定的文档得到更新时,它的行为完全相同


感谢您的任何帮助或想法

又试验了一周后,我终于找到了解决办法

所有的问题和不可理解的布局魔法都是由工作线程造成的,因为应该显示的FixedDocument是创建的(并且已经分配给documentviewer),然后由工作线程填充其内容

显示了内容,但只有当documentviewer接收到任何输入时,才在鼠标悬停或单击时更新布局。 我认为在输入时,documentviewer会对指定的文档进行另一次刷新

因此,我的解决方案很简单:在添加内容时创建一个“正在工作”的固定文档,并在完成所有操作后将其分配给查看器


现在剩下的是正确显示内容和布局,但有时需要5-10秒才能真正显示内容。但这只是加载繁重文档时的性能问题。我将尝试找出是否可以在文档完全加载之前构建某种加载通知

如果你给我们一些代码来说明你的问题,答案就更容易了。如果代码不是问题的直接原因,那么很难决定要显示什么代码。当按钮被点击而未被触摸时,文档显示错误。我猜问题也可能是,点击和触摸绑定到命令的按钮有什么区别。你怎么知道代码不是问题?因为从点击按钮和执行命令的那一刻起,执行的代码绝对没有区别——但结果不一样。因此,我的问题是:触摸事件是否与单击事件有所不同,以便它能够解释为什么在一种情况下文档显示(可能更新)正确,而在另一种情况下文档显示不正确。