【发布时间】:2010-08-11 11:00:49
【问题描述】:
关于 wpf 控件的绘制,我与 question 有类似的问题
我使用的应用程序是一个相当大的 Windows 窗体线程应用程序,在整个应用程序中包含多个 wpf 用户控件。问题出现在应用程序的插件中,其中第三方 c++ 库在单独的线程上调用,WndProc 被覆盖以从第三方库获取进度更新。我尚未确定导致问题的确切情况,但与上述问题类似,在几次运行后 wpf 控件无法绘制和更新。
设置 elementhosts 的宽度确实解决了大多数控件的绘画问题,但在此之后,应用程序中的所有 wpf 控件似乎都变得“无响应” - 视觉上......进度条无法显示进度(尽管值确实发生了变化),滚动条没有响应,在列表视图中选择一个项目不会突出显示它(它在调整大小后会突出显示并且它确实被选中 - 你只是可以看到它被选中)树视图在调整大小后不会绘制,它只显示树视图应该在的黑色背景(尽管当我点击它们应该在树视图中的项目时,事件确实会被触发)
我知道我可能应该首先找出导致此问题的问题的根源(它相当随机且难以捕获)-尽管在 WndProc 方法中设置断点似乎确实会导致它在常规基础上失败...
我所希望的是一种“重新激活”/刷新整个应用程序中所有其他控件的方法...我是一名中级 wpf、c# 开发人员,并且对在有效使用它们的背景...我的想法是某些告诉 wpf 重绘的事件或消息必须被破坏或中断或其他东西 - 我如何确定什么被破坏并可能重新激活它?
任何建议将不胜感激......
谢谢
【问题讨论】:
-
我设法缩小了导致问题的范围。从 WndProc 方法反复更新了自定义 WPF 进度条,当删除此更新时,其他 wpf 控件不会出现问题...我通过删除有问题的 wpf 控件并放入 Windows 窗体控件来解决此问题。然而,它并没有解决问题发生的原因以及可以采取哪些措施来防止它......我将做进一步的测试和测试应用程序来尝试确定这一点。