gpt4 book ai didi

c# - UWP v10240 GetAccentColor

转载 作者:行者123 更新时间:2023-11-30 23:13:27 24 4
gpt4 key购买 nike

我正在尝试使用以下代码在 UWP 平台上获取当前的 UI-AccentColor:

var uiSettings = new UISettings();
var accentColor = uiSettings.GetColorValue(UIColorType.Accent);

此代码适用于 v10586 和 v14939,但不适用于 v10240,但有以下异常(exception)情况:

Unable to cast object of 
type 'Windows.UI.ViewManagement.UISettings' to
type 'Windows.UI.ViewManagement.IUISettings3'.

问题:尽管在使用的 ApiContract [Assembly Windows.Foundation.UniversalApiContract, Version=1.0.0.0] 中定义了该方法,但为什么此代码不适用于 v10240,并且所有 AccentColor-EnumValues 都是也在 ApiContract v1 中定义?尽管文档没有提示此类异常,但避免此类错误的最佳做法是什么?

文档指定了 v10240 所用方法的可用性:UISettings::GetColorValue和使用的枚举:UIColorType

我已经找到 StackOverflow Get Variations of Accent color in UWP但这并不能解决我的问题。

展示项目位于:https://github.com/janjaali/UwpGetAccentColorVs10240

最佳答案

这看起来像是契约(Contract) list 中的一个错误,然后流入了文档。

GetColorValue 在 IUISettings3 中(因此提到它的类型转换错误)这是 11 月更新(内部版本 10586)的新功能。应该是UniversalApiContract 2.0版本

您应该能够通过 ApiInformation 类检查 API 是否可用。这将创建一个带有强调颜色的画笔,或者如果 GetColorValue 不存在则回退到特定于应用程序的默认值:

Brush accentBrush = (Brush) App.Current.Resources["CustomAppAccentBrush"];
if (Windows.Foundation.Metadata.ApiInformation.IsMethodPresent("Windows.UI.ViewManagement.UISettings","GetColorValue"))
{
var UISettings = new Windows.UI.ViewManagement.UISettings();
var accentColor = UISettings.GetColorValue(Windows.UI.ViewManagement.UIColorType.Accent);
accentBrush = new SolidColorBrush(accentColor);
}

关于c# - UWP v10240 GetAccentColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43598310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com