提出问题提出问题
 

已答复Flickering with AllowsTransparency=True

  • 2008年8月25日 21:04Josh Montgomery 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     
    I am seeing problems with flickering with Popup controls with AllowsTransparency="True". This problem seems to be related to specific video cards. I can see the problem using a Dell Latitude D820 with Intel 945GM video chipset. Other Dell Latitude 820 systems with an NVidia chipset do not have this problem. I have installed the latest drivers availble for this chipset.

    I have investigated the problem enough to find that there are known issues with Layered Window support in some cases --
    http://support.microsoft.com/kb/937106/en-us and http://forums.msdn.microsoft.com/en-US/wpf/thread/e6c0a499-9104-4971-ad5f-949dbe4de910

    I have applied the hotfix in the linked knowledgebase article, but it did not resolve the issue. I have been able to fix the problem by setting AllowsTransparency="False". However, in order to resolve the issue completely, I must change this for every popup in the application that has that setting.

    Is there any way to force AllowsTransparency="False" for all Popups (including third-party controls)? Or, are there other options that I should try to resolve this issue?


    Thanks,
    Josh

答案

  • 2008年8月25日 22:45Dr. WPF 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     已答复
    I'm not sure I'd solve this problem by disabling AllowsTransparency across the app.  It seems like you are sacrificing the general user experience to accomodate the needs of the lower end machines.  If anything, you might just want to add a way to toggle AllowsTransparency on or off.  (I'd probably just document the behavior and identify any known graphics cards/drivers that exhibit the behavior.)

    If you do want to solve this by modifying AllowsTransparency, you will need to approach this by retemplating the controls that contain or leverage popups (MenuItem, ComboBox, etc).  Most of the default templates for these controls explicitly set AllowsTransparency to True on their popups.  This means the local value cannot be overridden via property metadata or a simple style setter.  Retemplating is really the only option.
    Dr. WPF - Online Office at http://drwpf.com/blog/

全部回复

  • 2008年8月25日 22:45Dr. WPF 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     已答复
    I'm not sure I'd solve this problem by disabling AllowsTransparency across the app.  It seems like you are sacrificing the general user experience to accomodate the needs of the lower end machines.  If anything, you might just want to add a way to toggle AllowsTransparency on or off.  (I'd probably just document the behavior and identify any known graphics cards/drivers that exhibit the behavior.)

    If you do want to solve this by modifying AllowsTransparency, you will need to approach this by retemplating the controls that contain or leverage popups (MenuItem, ComboBox, etc).  Most of the default templates for these controls explicitly set AllowsTransparency to True on their popups.  This means the local value cannot be overridden via property metadata or a simple style setter.  Retemplating is really the only option.
    Dr. WPF - Online Office at http://drwpf.com/blog/
  • 2008年9月10日 17:23Josh Montgomery 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     
    I did some further work on this issue and determined that Intel has released drivers that resolve the issue, but they are not available from Dell yet. The setup program from Intel won't install them and instructs me to contact the computer manufacturer, so I had to bypass the installer and force Windows to use those drivers anyway. I hope Dell releases new drivers soon.