【发布时间】:2018-07-14 00:59:01
【问题描述】:
我有一个静态类,其中包含静态定义的 HEX 颜色值:
namespace Namespace1
{
public static class MyColors
{
public const string COLOR_1 = "#AABBCC";
// ...
}
}
我想在资源字典中定义所有这些颜色,以便它们可以在 XAML 中使用:
<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Namespace2.Style.Colors"
xmlns:n1="clr-namespace:Namespace1;assembly=Assembly1">
<Color x:Key="Color1" x:FactoryMethod="FromHex">
<x:Arguments>
<x:String>{x:Static n1:MyColors.COLOR_1}</x:String>
</x:Arguments>
</Color>
<!-- ... -->
</ResourceDictionary>
但这似乎不起作用。没有编译错误,但是颜色本身是空的(透明)。
如果我将{x:Static n1:MyColors.COLOR_1} 部分替换为实际的#AABBCC 值,那么它可以工作。
我还测试了{x:Static n1:MyColors.COLOR_1} 部分(带有 Label 和 Text 属性),它可以工作。
那么这里的问题是什么?这似乎是一个内部 Xamarin.Forms 错误。
【问题讨论】:
-
为什么要在类上定义颜色。我会在 xaml 中定义它...
-
因为颜色常量是在通用 .NETStandard 2.0 程序集中定义的,并且 WPF 应用程序也引用了这些常量,而不仅仅是 Xamarin.Forms。
-
你能定义两者吗?作为字符串的值和作为颜色的值?像这样的东西:stackoverflow.com/questions/10062376/…
-
我认为不可能按照您想要的方式进行。以前有人问过。 forums.xamarin.com/discussion/65684/…
-
哇,我还没有在论坛上找到这个讨论。那么替代方案是什么?我可以在代码中定义实际颜色,然后在 XAML 中静态引用它吗?
标签: c# xaml xamarin.forms