2017-01-06 5 views
0

Ich entwickle Multiplattform-App für ein Android, iOS, WinPhone und UWP. Ich habe benutzerdefinierte generische OnPlatform-Klasse geschrieben, um TextColor für bestimmte Plattformen zu ändern. Der Standard 'OnPlatform' in XAML hat nur iOS, Android und WinPhone. Was ich habe, war UWP erforderlich (siehe Code unten)Benutzerdefinierte generische OnPlatform in Xamarin-Formularen Problem

public class OnPlatformExt<T> : OnPlatform<T> 
    { 
     public T Android { get; set; } 
     public T iOS { get; set; } 
     public T WinPhone { get; set; } 
     public T Windows { get; set; } 
     public T Other { get; set; } 

     public OnPlatformExt() 
     { 
      Android = default(T); 
      iOS = default(T); 
      WinPhone = default(T); 
      Windows = default(T); 
      Other = default(T); 
     } 

     public static implicit operator T(OnPlatformExt<T> onPlatform) 
     { 
      switch (Xamarin.Forms.Device.OS) 
      { 
       case Xamarin.Forms.TargetPlatform.Android: 
        return onPlatform.Android; 

       case Xamarin.Forms.TargetPlatform.iOS: 
        return onPlatform.iOS; 

       case Xamarin.Forms.TargetPlatform.WinPhone: 
        return onPlatform.WinPhone; 

       case Xamarin.Forms.TargetPlatform.Windows: 
        return onPlatform.Windows; 

       default: 
        return onPlatform.Other; 
      } 
     } 
    } 

Dann Montage in App.xaml und in meinem Ressource-Lexikon nutzen als

<local:OnPlatformExt x:TypeArguments="Color" 
       iOS="#f0f8ff" 
       Android="White" 
       WinPhone="#008566" 
       Windows="White" 
       Other="White" x:Key="LightTextColor" /> 

Alles Kompilieren gut. Aber das ändert immer noch nicht diese bestimmte Farbe für meinen Knopfstil. Ich wollte sagen, dass wenn ich ein normales 'OnPlatform x: TypeArguments = "Color" verwende ... dann ändert es die Farben auf bestimmten Plattformen. Habt ihr eine Ahnung, was mit diesem Code-Stück los ist?

Antwort

1

Ich habe Ihren Code überprüft und nichts falsch gefunden. Ich habe nur die Farbe geändert (siehe Codes unten), die Sie festgelegt haben, und dann referenzierte ich das Ressourcenwörterbuch in der MainPage.xaml wie diese BackgroundColor="{StaticResource Key=LightTextColor}". Und es funktioniert gut in (Xamarin.UWP & Xamarin.Android). Könnten Sie bitte versuchen, die App auf Ihrem Computer zu deinstallieren, die Lösung zu bereinigen und sie erneut bereitzustellen? Wenn es nicht funktioniert. Bitte versuchen Sie meine Demo: GitHub.

<ResourceDictionary> 
    <local:OnPlatformExt 
     x:Key="LightTextColor" 
     x:TypeArguments="Color" 
     Android="Red" 
     Other="White" 
     WinPhone="White" 
     Windows="#008566" 
     iOS="#f0f8ff" /> 
</ResourceDictionary> 
+0

Hallo ya, vielen Dank für die Überprüfung meines Codes. Alles, was ich erreichen wollte, war, die Schriftfarbe auf UWP in "Weiß" zu ändern. Code funktioniert in der Tat .. aber "weiß" nicht. Ich habe auch '#ffffff' ausprobiert. Ich habe beschlossen, dort neben "Weiß" Schnee zu legen, der jetzt funktioniert (ich weiß nicht warum ...). Ich habe auch meinen Code gereinigt und neu aufgebaut, aber die Hauptlösung war, die App zu deinstallieren :) Sorry und danke für Ihre Zeit. –

Verwandte Themen