Xamarin表单 - 在代码

时间:2016-05-27 18:41:33

标签: c# android resources windows-phone xamarin.forms

我在全球资源中使用此颜色(在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>

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

1 个答案:

答案 0 :(得分:1)

您可以在App.xaml中执行此操作,无需转到代码。只需要一点点不同的方法。这是代码

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

这之所以有效,是因为OnPlatform泛型类定义了隐式会话运算符,它可以将每个OnPlatform对象转换为其入站通用T类。像这样的东西

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