【问题标题】:Why is AutoScaleMode property not included in WPF?为什么 WPF 中不包含 AutoScaleMode 属性?
【发布时间】:2013-08-06 23:00:22
【问题描述】:

我遇到了这样一种情况,尽管 MinWidth 和 MinHeight 属性在 Windows 分辨率下(在 Windows 7 上)具有相同的值,但我的应用程序仍然没有完全显示在屏幕上(顶部的一些部分和右边被剪掉了)。例如:

MinWidth="1280" MinHeight="960"

Windows 分辨率设置为 1280x960。仍然没有完全显示应用程序。但是,如果我将分辨率 DPI 更改为更小(96dpi),应用程序将正确显示。如何在 WPF 应用程序中将 AutoScaleMode 设置为 dpi。

即使在@Abe Heidebrecht 回答之后,我也没有看到结果有任何改善。例如,当我最大化应用程序时,我的用户界面如下所示:(请注意,我有一个秒监视器,黑色区域在第二个监视器上)

【问题讨论】:

  • 显示您的 XAML。很可能您使用 Visual Studio 设计器创建了您的 UI,而不是以正确的方式(即自己手动输入 XAML)。因此,您的 UI 充满了固定的大小和位置。顺便说一句,WPF 默认情况下是独立于分辨率的,它不需要AutoScale 或任何其他恐龙winforms 的可怕黑客。
  • Winforms == 恐龙。从来没有说过更真实的话。 +1 对视觉工作室设计师的评论。 MS为什么要这样对我们:(

标签: wpf autoscaling


【解决方案1】:

WPF 使用与设备无关的像素。在 WPF 中,1 个像素应该是 1/96 英寸(因为在 WPF 开发时 96DPI 并不常见)。因此,如果您的显示器具有更高的 DPI,WPF 实际上会报告您的像素多于 1280x960。 Here is a blog post that I thought explained things well.

我会使用 SystemParameters 类来获得你想要的东西:

Width="{DynamicResource {x:Static SystemParameters.FullPrimaryScreenWidthKey}}"
Height="{DynamicResource {x:Static SystemParameters.FullPrimaryScreenHeightKey}}"

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    相关资源
    最近更新 更多