UI的几个部分未绘制

时间:2011-04-14 09:10:14

标签: wpf

我们有一个非常奇怪的WPF应用程序行为。有时候(不是很常见),用户界面的某些部分根本就没有画过。

最近,配置视图上的保存按钮和文本框未显示。更奇怪的是,在重新登录之后,导致新视图实例的原因仍然存在。 有时将鼠标悬停在缺失控件通常可以看到的位置上会有所帮助。但是切换标签页然后再回到原来的标签页,缺少控件,它们都会再次丢失。将鼠标悬停在其上时,不会显示其他控件。

另一个问题是对话有时搞砸了。对话框的部分垂直移位。但是,例如对话框内的文本框获得焦点,在对话框的其余部分移位时正确绘制。

我没有丝毫的线索导致这个问题。任何想法都是受欢迎的。

[编辑1] 到目前为止,我们已经在Windows XP上看到了这一点。 Windows 7似乎没问题。此外,切换到软件渲染似乎可以解决Windows XP上的问题,但我不确定这一点。

2 个答案:

答案 0 :(得分:3)

通过将RenderMode切换到SoftwareOnly解决了这个问题。在Windows XP上运行时似乎是一个.NET 4问题:

public class MyWindow : Window
{
    protected void SetSoftwareRendering()
    {
        System.Windows.Interop.HwndSource hwndSource = PresentationSource.FromVisual( this ) as System.Windows.Interop.HwndSource;
        System.Windows.Interop.HwndTarget hwndTarget = hwndSource.CompositionTarget;

        hwndTarget.RenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;
    }
}

或者可以写

System.Windows.Media.RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;

所有窗口都是从MyWindow继承的,可以决定是否需要软件渲染。目前,我们不使用这种灵活性,并在所有实例上启用它。

答案 1 :(得分:1)

如果在其他WPF应用程序中也发生这种情况,则可能是您的硬件,驱动程序,操作系统或.NET软件。

如果没有,唯一的选择是尝试在最小的情况下和几台机器上重现。

您是否能够制作出问题的最小版本?