【问题标题】:Get Windows 10 Text Scaling value in WPF在 WPF 中获取 Windows 10 文本缩放值
【发布时间】:2021-10-20 05:46:00
【问题描述】:

如何在 WPF 中以编程方式检索 Windows 的 文本缩放值

【问题讨论】:

  • 为什么需要得到它? WPF 不应该为您处理它吗? stackoverflow.com/questions/9373260/…
  • 我需要这个值 @gunr2171,我相信它在 UWP 中是可能的,不幸的是我需要它用于 WPF,但我找不到获得它的方法。

标签: c# wpf windows text uwp


【解决方案1】:

根据您的目标是 .NET 5 还是更早版本,您应该将 TargetFramework 设置为 net5.0-windows10.0.* 或将 Microsoft.Windows.SDK.Contracts NuGet 包安装为描述了here

然后您可以使用Windows.UI.ViewManagement.UISettings.TextScaleFactor 属性:

double factor = new UISettings().TextScaleFactor;

【讨论】:

  • 我正在使用.NET Framework 4.7.2,我已经安装了Microsoft.Windows.SDK.Contracts,但不包括Windows.UI.ViewManagement命名空间(仅Windows.UI.Xaml
  • 它没有,在Microsoft.Windows.SDK.Contracts.targets 中有一个错误说必须使用PackageReference。这是关于向我的项目添加 nuget 包的引用吗?
  • Microsoft.Windows.SDK.Contracts.targets 文件的内容。 <?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="PackageReferenceCheck" BeforeTargets="Build"> <Error Text="Must use PackageReference" Condition="'@(PackageReference)' == ''" /> </Target> </Project>这就是我得到的全部
  • 您是否更改了.csproj 文件的格式?
  • 好的,这里有链接!
【解决方案2】:

我找到了一种无需安装任何 Nuget 包即可检索 文本缩放因子 的方法。这个想法是直接从注册表中获取值。

var userKey = Microsoft.Win32.Registry.CurrentUser;
var softKey = userKey.OpenSubKey("Software");
var micKey = softKey.OpenSubKey("Microsoft");
var accKey = micKey.OpenSubKey("Accessibility");

var factor = accKey.GetValue("TextScaleFactor");`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2019-04-10
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多