通过


缓解:WPF 窗口呈现

在 Windows 8 及更高版本上运行的 .NET Framework 4.6 中,在多显示器环境下,如果窗口扩展到超出单个显示器的范围,将完整呈现而不会被裁剪。

影响

通常,跨多个监视器不经剪辑呈现整个窗口是预期行为。 但是,在 Windows 7 和更早的版本中,当 WPF 窗口超出单个显示器范围时,它们会被剪裁,因为将窗口的一部分呈现在第二个监视器上会对性能产生显著影响。

在 Windows 8 及更高版本的监视器上呈现 WPF 窗口的精确影响并非精确可量化,因为它依赖于大量因素。 在某些情况下,它仍可能会对性能产生不良影响,尤其是对于运行图形密集型应用程序并具有窗口跨屏监视器的用户。 在其他情况下,你可能只是希望跨 .NET Framework 版本出现一致的行为。

缓解措施

当窗口超出单个显示屏时,你可以禁用此更改并恢复到以前的剪辑 WPF 窗口的行为。 可以通过两种方式来执行此操作:

  • 通过将 <EnableMultiMonitorDisplayClipping> 元素添加到应用程序配置文件的 <appSettings> 部分,可以在 Windows 8 或更高版本上的应用程序中禁用或启用此行为。 例如,以下配置部分禁用不剪裁的渲染过程:

    <appSettings>
        <add key="EnableMultiMonitorDisplayClipping" value="true"/>
      </appSettings>
    

    配置 <EnableMultiMonitorDisplayClipping> 设置可以包含两个值之一:

    • true,启用在呈现期间监视边界的窗口剪辑。

    • false,禁用在呈现期间监视边界的窗口剪辑。

  • 在应用启动时,通过将EnableMultiMonitorDisplayClipping属性设置为true

另请参阅