2009-08-11 256 views
16

我在一个客户机器上出售WPF应用程序(数以百计)整个应用程序窗口都是黑色的,任何人都知道发生了什么?wpf窗口全黑

机器运行的是Windows XP和.net 3.5SP1,图形适配器是带有两个显示器的GeForce 6200(禁用一台显示器并不能解决问题)。

将“兼容性设置”设置为“256色”可以解决问题(但这不是一个可行的解决方案,我需要更多的颜色才能使应用看起来很好)。

该应用程序是yaTimer(http://www.nbdtech.com/yaTimer/),它基于“无航空Office 2007的”一节中在这个岗位http://blogs.msdn.com/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx描述的技术的自定义窗口镶边。

如果任何人都能给我一个线索,知道发生了什么,我会非常感激。

谢谢。

+0

我也有同样的问题,通过使用相同的技术。 – VHanded 2011-03-09 01:53:23

+0

你解决了这个问题吗? – 2011-08-11 15:02:33

+0

@Luis Filipe - 不,我没有解决这个问题,遇到这个问题的客户决定换用不同的产品(并不令人意外),我也没有收到任何人对这个问题的抱怨,希望你找到解决方案 – Nir 2011-08-11 20:50:19

回答

0

听起来很相似,我有一天晚上,并张贴在这里的问题:

Question: WPF - No Content Rendered

检查显卡驱动程序作为一种可能性

+0

谢谢,但驱动程序已经是最新版本。 – Nir 2009-08-12 19:40:12

+0

我在远程桌面连接上遇到此问题。从我的电脑工作正常;从另一台电脑显示黑色窗口 – 2011-08-11 15:06:08

+0

我在手机上遇到了ATI驱动程序问题。 – decompiled 2011-08-18 13:00:15

1

我曾与覆盖问题的窗口模板。 我想,如果你只是在Themes/Generic.xaml中的继承窗口风格,它的作品。但在任何其他资源中,您将获得一个黑色窗口。 (VS 2008 - WPF 3.5)

0

尝试在客户机上安装最新的DirectX软件包。

1
+0

我会尽快查看此信息 – 2011-08-11 17:24:21

+0

这不能解决实际问题;我不能认为这是一个“答案”,而是一种猜测。 – Sung 2011-08-16 01:46:32

7

我们(www.novamind.com)过去有多个客户有类似的问题,其中应用程序不能正确绘制或根本不绘制。原因是:

  • 图形驱动程序不是最新的。
  • Windows主题已损坏。将Windows主题更改为不同的内容,然后再回来,解决了问题。
  • Windows正在虚拟机中运行。大多数虚拟机具有实验性硬件加速功能,通常不能正确支持WPF应用程序。 - 关闭硬件加速可解决问题。

这也可以帮助:

  • 重新安装.NET Framework - 有时安装已损坏。
  • 确保安装了所有最新的Windows更新。

希望这会有所帮助。祝你好运。

+0

我无法确定问题的根源,因为它不再发生。我为这一奖赏了这笔奖金,因为这似乎是最合理的问题。对不起所有其他人留下。 – 2011-08-19 12:29:29

2

我只有在窗口chome中启用GlassFrame时才会出现此问题。

尝试将GlassFraneThickness设置为0,并且窗口将再次呈现。虽然你会失去玻璃框架,但比黑色应用程序更好。

<shell:WindowChrome.WindowChrome> 
    <shell:WindowChrome CaptionHeight="32" GlassFrameThickness="0" ResizeBorderThickness="5" CornerRadius="0" /> 
</shell:WindowChrome.WindowChrome> 

也许你也可以尝试强制窗口重画。我的情况是,窗口内容显示,当我将窗口移动到另一个显示器或出视口,再次,因此重绘似乎做的工作。

在Microsoft.Windows.Shell源代码有一个函数_FixupWindows7Issues()(在WindowChromeWorker类),这应该修复按照它的评论的问题,但显然不...

+0

设置GlassFrameThickness =“0”固定给我。 – RHaguiuda 2016-12-15 11:25:18

0

我最近遇到了一个类似的问题,在WPF中的一个黑色窗口中,在VB 2010/.Net 4.0解决方案中,其他每个窗口都可以正常工作。罪魁祸首原来是我使用以下3个命令切换可见性的方式。解决的办法是删除所有,但第一线,与Visibility属性引用一个(只去掉.Show行会导致它正确地呈现在第一时间,但此后黑):

   Application.MisbehavingBlackWindow.Visibility = System.Windows.Visibility.Visible 
      Application.MisbehavingBlackWindow.Show() 
      Application.MisbehavingBlackWindow.Activate() 

我从来没有之前有一系列的命令显示一个WPF窗口的问题,所以我想我已经陷入了一种尴尬的境地,从不费心去检查它是否是最佳的方式去实现它;出于习惯,我只是根据需要粘贴代码来召唤窗户。它仍然适用于我曾经写过的其他所有解决方案中的其他窗口,但它导致这个特定窗口变黑。起初它只是在一个特定的程序中间歇性地发生,然后由于未知的原因而变成永久的。我试验过的以下代码行中没有任何区别:

  Application.MisbehavingBlackWindow.InvalidateVisual() 
      Application.MisbehavingBlackWindow.InvalidateArrange() 
      Application.MisbehavingBlackWindow.UpdateLayout() 
      Application.MisbehavingBlackWindow.BringIntoView() 
      Application.MisbehavingBlackWindow.WindowState = WindowState.Minimized 
      Application.MisbehavingBlackWindow.WindowState = WindowState.Normal 

从窗口中剥离所有控件没有任何影响;如果它仅由单个TextBlock填充,它仍然会变黑。另一方面,在我尝试从其他例程中执行它后,出现了一种模式,特别是如果将第一个代码块粘贴到调用另一个窗口的代码块中。如果我在下面的代码块之前插入它,窗口会变黑;如果我插入它后,它没有。

   Application.OtherWindow.Visibility = System.Windows.Visibility.Visible 
       Application.OtherWindow.Show() 
       Application.OtherWindow.Activate() 

即使使用Window.Hide()命令隐藏窗口,该解决方案仍然有效(到目前为止)。我已经有一个包含在冒犯窗口内的事件Sub中,当窗口失去焦点时就会触发它。使用Visibility属性切换回来仍然有效,而不需要对该.Hide语句进行任何更改。

我希望这可以帮助任何遇到这个令人不快的问题的人。到目前为止,我在互联网上看到的大多数解决方案似乎都基于Windows主题,图形卡和其他外部变量,但我们可以在我们的.Net代码中显然修复此权限的一些实例 - 背后。