WPF破坏了布局

时间:2010-12-22 11:32:24

标签: c# .net wpf layout

我的某些系统上的WPF应用程序出现问题。也就是说,每当应用程序启动时,布局似乎完全被破坏(不可读的文本,元素和控件缺少部分,出现在它们不应该出现的地方等)。

我已经读到它与图形驱动程序有关,但是当他们甚至无法确保在大多数系统上正确呈现时,Microsoft如何期望我们使用这种技术?

我必须在Win-forms上重写我的最新应用程序,因为我不能确定这样的事情不会发生在我的客户的计算机上(并且考虑到数字游戏,它肯定会在某些时候) 。例如:

alt text

这应该是放置在组框内的gridview。然而,组合框似乎完全被撕裂,并将其子元素置于错误的位置。

就像我说的那样,每次在每个系统上都不会发生这种情况,但它经常发生,它已成为我的主要关注点。

任何建议,除了重写Winforms中的所有内容(这是我的第一个选项)?

2 个答案:

答案 0 :(得分:0)

您确定这是与驾驶员相关的问题吗?司机不太可能搞砸布局。它看起来像布局引擎的问题,或者可能是问题机器上的主题样式中的错误。

我会按顺序执行以下操作并检查结果。

  1. 在问题机器上使用默认的Windows主题并检查。
  2. 将目标.Net框架版本设置为合理的版本并进行检查。我认为3.5 SP1的分钟应该足够好了。
  3. 更新问题机器上的显示驱动程序并检查。
  4. 我认为您猜测问题与显示驱动程序有关。你确定吗?我使用3.5 SP1,在>上运行一些相当复杂的UI 200K机器没有问题。

    我在NVidia驱动程序上遇到了一个与显示驱动程序相关的问题,但这些问题特定于阴影并且在MS连接站点上正确记录。

答案 1 :(得分:0)

为防止出现驱动程序问题,您可以切换到Windows的软件渲染,这些代码存在以下问题:

(PresentationSource.FromVisual(this) as HwndSource).CompositionTarget.RenderMode = RenderMode.SoftwareOnly;

但是,您所看到的并不像驱动程序问题(它们通常被视为部分UI的撕裂或模糊)。元素的放置由CPU上运行的布局引擎处理,因此不受图形卡的影响。如果它在特定机器上一致地发生,则更可能是主题问题。如果不能始终如一地发生,您可能会遇到布局引擎错误,并且可以通过使用备用布局来解决问题。