2016-05-27 3 views
0

Ich benutze diese Farbe in globalen Ressourcen (in app.xaml)Xamarin Forms - bringt Farbe in der globalen Ressourcen von Code

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

Ich brauche verschiedene Farben für Android und Windows Phone. Ich habe diesen Code versucht:

 <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> 

aber es funktioniert nicht. Sag mir - wie man es im Code hinterherhinkt. Ist es möglich?

Antwort

1

Sie können es in App.xaml tun, müssen nicht nach Code gehen. Einfach brauchen Sie ein bisschen anders Ansatz. Hier ist der Code

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

Der Grund, warum dies funktioniert, ist, weil OnPlatform generische Klasse implizites Gespräch Operator hat definiert, die jedes OnPlatform Objekt seine eingehende generic T Klasse umwandeln können. Etwas wie das

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

Es ist nicht Arbeit. Ich bekomme System.Reflection.TargetInvocationException – FetFrumos

+0

Das Problem liegt nicht daran, Sie haben andere Probleme in Ihrer App. Können Sie Ausnahmebedingungen aus der Ausgabe veröffentlichen? – kyurkchyan

+0

Es ist Arbeit. Problem war in meinem Code. Danke. – FetFrumos