2017-04-05 1 views
2

Warum MergedWith ResourceDictionary Attribut unterstützt OnIdiom Feature nicht? Dieser Code funktioniert gut:Verwenden Sie in Xamarin OnIdiom mit OnIdiom

<ResourceDictionary.MergedWith>theme:PhoneTheme</ResourceDictionary.MergedWith> 

Dies man die MergedWith Eigenschaft auf null gesetzt:

<ResourceDictionary.MergedWith> 
    <OnIdiom x:TypeArguments="x:String"> 
     <OnIdiom.Phone>theme:PhoneTheme</OnIdiom.Phone> 
     <OnIdiom.Tablet>theme:TabletTheme</OnIdiom.Tablet> 
    </OnIdiom> 
</ResourceDictionary.MergedWith> 

Gibt es eine Lösung, die ein anderes Thema zwischen der Telefonsprache und dem Tablet-Idiom zu benutzen?

Antwort

1

Sie können dies derzeit nicht in XAML zu diesem Zeitpunkt tun, jedoch können Sie es mit einer Codebehind-Datei umgehen. Ich verwende die Anwendung xaml und codebehind, um die Themen dynamisch zu ändern. Dann machen Sie einfach die Standard-Vererbung für die Phone- und Tablet-Themen zu allgemeinen Farben, Stilen usw. Nur überschreiben, was in jedem Iodiom-spezifischen Thema benötigt wird.

MyApp.xaml

<Application ...> 
    <ResourceDictionary x:Name="appTheme"> <!-- Name the Resource Dict //--> 
     ...Any converters, etc 
    </ResourceDictionary> 
</Application> 

MyApp.xaml.cs

public partial class MyApp : Application 
{ 
    public MyApp() 
    { 
     InitializeComponent(); 
     // Toggle appTheme.MergedWith based on Idiom 
     appTheme.MergedWith = Device.Idiom == TargetIdiom.Phone ? typeof(PhoneTheme) : typeof(TabletTheme); 
    } 
} 
+0

Es ist eine gute Idee, aber nachdem das zusammengeführte Ressourcenwörterbuch wie eine dynamische Ressource betrachtet wird. Es ist nicht gut für mich. – flchaux

2

Es wird derzeit nicht unterstützt, wurde aber coined on the Xamarin Forums.

Ein Workaround könnte sein, separate Seiten für Telefon und Tablet zu erstellen und abhängig von der Redewendung die eine oder andere Seite anzuzeigen. Auf dieser Seite können Sie ein eigenes Thema haben. Ich denke, das ist das Beste, was du zu dieser Zeit tun kannst.

+1

Hum es ist schon weiß ich, aber ich wollte das Idiom Thematisierung vereinfachen. Vielen Dank für Ihre Antwort! – flchaux

Verwandte Themen