如何从 WPF MSIX 应用程序(桌面桥)更改 Windows 10 颜色设置?

Posted

技术标签:

【中文标题】如何从 WPF MSIX 应用程序(桌面桥)更改 Windows 10 颜色设置?【英文标题】:How can I change the Windows 10 Colors settings from a WPF MSIX app (Desktop Bridge)? 【发布时间】:2021-08-11 00:48:48 【问题描述】:

在 Win 10 中有这部分的自定义设置

我想知道是否有一种方法可以更改深色/浅色设置和强调色,而无需更改注册表项(据我所知,这涉及将其他进程作为桌面扩展程序产生的大量开销以及什么 -没有,并在之后执行额外的步骤来发布应用程序)。

如果没有这种方法,是否有实施这些功能的时间表? (例如将它们放在Windows.System.UserProfile.UserProfilePersonalizationSettings.Current 下)-(希望 MSFT 的人看到这一点)

谢谢。

【问题讨论】:

你的进展如何?您的问题解决了吗? 不,我想我得到了一个答案,即目前没有办法很好地做到这一点,但是如果有计划在我提到的命名空间下实现它,我没有得到任何答案(即已经是 Contracts 包的一部分,所以这个答案的很大一部分是多余的)。 我在你说的命名空间下检查了这些属性和方法,没有相关的API可以做到这一点,所以可能需要通过设置app手动更改。 不,我不需要通过设置应用程序更改它,我不能告诉用户“通过设置应用程序更改它”,应用程序的一部分是我可以更改这些用户的设置。正如我所说,它已经可以通过注册表编辑来完成,但这很麻烦。我想您希望我将您的帖子标记为答案。如果您还可以添加有关计划的信息以使其易于访问,我可以做到这一点(例如,可以通过UserProfilePersonalizationSettings 轻松更改墙纸,因为这是我的问题的一部分 【参考方案1】:

目前,uwp 还没有提供这样的 api 来直接改变 Dark/Light 设置和强调色。一般建议通过launching the Windows Settings app进行。另外,如果你想在 WPF MSIX 应用程序中使用它,你需要添加指定的包引用,这样你就可以call windows runtime api from this desktop app。请参考以下步骤。

1.安装Microsoft.Windows.SDK.Contracts NuGet包

点击工具->NuGet包管理器-> 包管理器 设置-> 将默认包管理格式更改为 包参考。

安装Microsoft.Windows.SDK.Contracts package,注意你 需要安装合适的版本。请检查 下面对应的版本。 (安装详情:右键 参考-> 管理 NuGet 包-> 浏览-> 搜索 Microsoft.Windows.SDK.Contracts->安装)

10.0.19041.xxxx:为 Windows 10 版本 2004 版本 20H2 选择此选项 10.0.18362.xxxx:为 Windows 10 版本 1903 选择此选项。 10.0.17763.xxxx:为 Windows 10 版本 1809 选择此选项。 10.0.17134.xxxx:为 Windows 10 版本 1803 选择此项。

2.启动设置应用

private async void Button_Click(object sender, RoutedEventArgs e)
        
           await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings:colors"));
        

【讨论】:

以上是关于如何从 WPF MSIX 应用程序(桌面桥)更改 Windows 10 颜色设置?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XamlIslands 和桌面桥打包 WPF (.NET Core) 应用程序?

无法从 MSIX 打包应用程序加载外部 DLL

使用 MSIX 打包的 WPF 无法通过 Microsoft Store 验证

阅读 msix 包 appxmanifest 版本

WPF 引用 UWP 控件 不打包为 MSIX 分发的方法

如何使用 MSIX 打包和部署注册表项