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)
我在全局资源中使用这个颜色(在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)