none
Wie kann man mehrere App-Styles "managen" RRS feed

  • Frage

  • Hallo Leser,

    ich habe eine kleine App, in der ich mehrere Themes verwenden möchte (Es wird eins Standardmäßig geladen und der Benutzer kann später aus mehreren Designs wählen). Diese Designs werden ganz normal als ResourceDictionary gespeichert. Momentan lade ich über die App.xaml den erste Style. Wie kann ich über C# dieses ResourceDictionary gegen ein anderes austauschen?

    Ich stelle mir das so vor, dass ich den Namen des Styles über eine Combobox auswählen lasse und diesen in den Einstellungen der App speichere. Wenn die App später geladen wird, rufe ich den Wert ab und lade sofort diesen Style. Mir fehlt quasi nur der Code mit dem ich das anstellen kann ;).

    Viele Grüße Xe77a

    Samstag, 13. Dezember 2014 14:19

Antworten

  • Hallo.

    Um zur Laufzeit den Style zu ändern, kannst du z.B. einfach den Style-ResourceDictionary ersetzen.

    Dann nach solltest du aber auch alle Elemente neu laden.

    void ChangeStyle() {
       //Path des neuen Stils
       string path = "ms-appx:///Path/To/File.xaml"; //Anpassen
       Uri uri = new Uri(path, UriKind.RelativeOrAbsolute); 
       
    ResourceDictionary dicNew = new ResourceDictionary() {
      Source = uri;
    }
    
    //Dies ist der Stil, der in App.xaml gesetzt wurde - bei MergedDictionarys aufpassen!!
    Application.Current.Resources = dicNew;
    
    //Style wurde ersetzt - Alle Elemetne neu laden
    MainPage nPage = new MainPage();
    Window.Current.Content = nPage;
    //Dieser Code lädt die Hauptseite neu (MainPage / Standart).
    //Bitte ggf. anpassen / Wichtig ist, dass ALLE UI-Elemente neu geladen werden, weil erst dann der neue Style überall gilt. 
    
    }


    (C) 2014 Thomas Roskop

    Samstag, 13. Dezember 2014 14:50