Xamarin Forms - 通过代码在全局资源中添加颜色

Xamarin Forms - add color in global resources from code

我在全局资源中使用这个颜色(在app.xaml)

       <Color x:Key="MyColor" x:FactoryMethod="FromHex">
            <x:Arguments>
                <x:String>#ffffff</x:String>
            </x:Arguments>
        </Color>

Android 和 Windows Phone 我需要不同的颜色。我试过这段代码:

       <Color x:Key="MyColor" x:FactoryMethod="FromHex">
            <x:Arguments>
                <OnPlatform x:TypeArguments="x:String"
                              Android="#006ABB"
                              WindowsPhone="#ffffff"  />
                <x:String></x:String>
            </x:Arguments>
        </Color>

但它不起作用。告诉我 - 如何在后面的代码中添加它。可能吗?

您可以在App.xaml中完成,无需去编码。只是您需要一些不同的方法。这是代码

<Application.Resources>
    <ResourceDictionary>
      <OnPlatform
        x:Key="MyColor"
        x:TypeArguments="Color"
        Android="#006ABB"
        iOS="#006A00"
        WinPhone="#ffffff"/>
    </ResourceDictionary>
  </Application.Resources>

之所以可行,是因为 OnPlatform 泛型 class 定义了隐式对话运算符,它可以将每个 OnPlatform 对象转换为其入站泛型 T class。像这样

public static implicit operator T(OnPlatform<T> onPlatform)