如何在MAUI XAML中通过已有颜色资源定义新颜色?
问题原因与解决方案
问题出在哪?
你尝试的两种写法都不符合MAUI XAML中定义颜色资源的逻辑:
- 第一种写法
<Color x:Key="FgColorDarkMode">{StaticResource Gray950}</Color>:XAML解析器会把{StaticResource Gray950}当作纯字符串处理,试图将这个字符串直接转换为Color类型,显然无法完成转换,所以抛出XFC0040错误。 - 第二种写法
<Color x:Key="FgColorLightMode" Color="{StaticResource Gray950}"/>:Color元素本身并没有名为Color的可绑定属性,MAUI的Color元素是通过标签内容直接设置颜色值的,这种写法本身就不合法。
而控件的TextColor/BackgroundColor等属性属于可绑定属性,它们支持直接接收StaticResource返回的Color对象,所以能正常工作。
正确的写法
不需要用Color标签包裹,直接在资源字典中通过StaticResource引用已有颜色资源即可:
<StaticResource x:Key="FgColorDarkMode" ResourceKey="Gray950" /> <StaticResource x:Key="FgColorLightMode" ResourceKey="Gray950" />
这样定义的FgColorDarkMode和FgColorLightMode会直接复用Gray950对应的颜色值,完全符合你的需求。
内容的提问来源于stack exchange,提问作者AndreasW
相关产品推荐
相关产品推荐

