加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows 10上的空白WPF子窗口

发布时间:2020-12-14 04:00:10 所属栏目:Windows 来源:网络整理
导读:我从 Windows 8.1(64位)升级了Windows 10.在WPF应用程序(由我或其他人开发,如屏幕截图中的todotxt.net)中,子窗口大部分时间都是空白的. 如果我将鼠标移到控件上,其中一些会出现(我猜是因为它们处理WM_MOUSEHOVER消息以重新绘制自己).有时候窗户还可以(约10-2
我从 Windows 8.1(64位)升级了Windows 10.在WPF应用程序(由我或其他人开发,如屏幕截图中的todotxt.net)中,子窗口大部分时间都是空白的.

如果我将鼠标移到控件上,其中一些会出现(我猜是因为它们处理WM_MOUSEHOVER消息以重新绘制自己).有时候窗户还可以(约10-20%的发射时间).我通过隐藏和显示控件暂时解决了这个问题(请参阅下面的内容).

在Hyper-V上全新安装Windows 10不会重现错误.

有没有人遇到类似的问题?你是怎么解决的?

它在这里看起来如何(空白子窗口):

鼠标移动后:

我的解决方案

我无法在互联网上找到任何其他解决方案.如果您找到任何其他解决方案,请告诉我.

首先,简单的重新绘制(通过InvalidateVisual())并没有解决问题.

我决定处理ContentRendered事件并隐藏然后显示所有控件.诀窍有效,但它“闻起来”.

在下面的代码中,mainGrid是我子窗口最顶层Grid的名称:

XAML:

<Window x:Class="MyApp.About"
    .........
    ContentRendered="Window_ContentRendered" 
    ...... >
    <Grid x:Name="mainGrid" ... >

CS:

private void Window_ContentRendered(object sender,EventArgs e)
{
    InvalidateVisual(); // Just in case
    var childCount = VisualTreeHelper.GetChildrenCount(mainGrid);

    for (int i = 0; i < childCount; ++i)
    {
        var child = VisualTreeHelper.GetChild(mainGrid,i) as UIElement;

        if (child != null)
        {
            child.Visibility = Visibility.Hidden;
            child.Visibility = Visibility.Visible;
        }
    }
}

解决方法

根据我的观察,这只是Windows 10上的Intel GPU驱动程序问题(Windows 8很好).我们有一个WPF桌面应用程序,其中包含数千个在Windows 7,8,8中运行良好的用户,但是当安装在Windows 10中时,某些Windows 10运行良好,但有些将完全显示此线程解释的内容.

要解决此问题,最简单的方法是更新有问题的计算机的Intel GPU驱动程序.如果你拼命地发现它甚至没有帮助你运行最新的Windows更新并且问题仍然存在,请尝试通过以下方式手动更新驱动程序:

>在“设备管理器”中,右键单击图形卡,然后选择“更新驱动程序”.
>通过这种方式,Windows 10将尝试查找有时在Windows更新中不可用的最新驱动程序.
>如果设备管理员告知您的驱动程序已经是最新的,那么最后的方法是在这里查找驱动程序:https://downloadcenter.intel.com/

对于某些机器,例如运行有点新的CPU / GPU(Atom X7)的Microsoft Surface 3(不是表面专业版),更新驱动程序似乎还不可能,我仍然在寻找这种机器的分辨率.

在其他情况下,我的大多数英特尔高清GPU在更新到驱动程序版本10.18.15.4278后解决了这个问题

注1:到目前为止,我还没有看到这个问题出现在其他GPU中,比如Nvidia或ATI.注2:总的来说,我会说,除了最新的英特尔凌动X5 / X7之外,大多数其他英特尔高清显卡应该能够执行驱动程序更新并解决此问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读