2008-09-23 7 views
21

Ich möchte, dass meine WPF-Anwendung durch Anwenden einer bestimmten XAML-Vorlage und die anwendungsweiten Änderungen auch für dynamische Steuerelemente oder Steuerelemente, die nicht einmal in der visuellen/logischen Struktur enthalten sind, skinfähig gemacht werden kann.Was ist der empfohlene Weg, um eine gesamte Anwendung in WPF zu häuten?

Was kann ich verwenden, um diese Art von Funktionalität zu erreichen? Gibt es gute Ressourcen oder Tutorials, die zeigen, wie diese spezielle Aufgabe erledigt werden kann?

Antwort

10

Der grundlegende Ansatz besteht darin, Ressourcen in der gesamten Anwendung zu verwenden und die Ressourcen zur Laufzeit dynamisch zu ersetzen.

Siehe http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ für den Grundansatz

+0

Hallo Maurice, diese beiden Links sind jetzt 404s. Gibt es eine Chance, Ersatz zu finden? – Matt

+0

@Matt https://web.archive.org/web/20130411050848/http://www.codewrecks.com/blog/index.php/2008/05/22/simple-skinnable-and-theme-management-in -wpf-user-interface – Xcodo

4

Die Ressourcen ersetzt wird funktionieren, aber ich fand „strukturelle Häutung“ mächtiger zu sein! Lesen Sie mehr darüber auf Codeproject ...

http://www.codeproject.com/KB/WPF/podder1.aspx

+0

Eine alte Frage und Antwort, aber wenn ich mich nicht irre, scheint es, dass die Methode, auf die auf dieser Seite angespielt wird, auch (zumindest teilweise) auf der dynamischen Ressourcenreferenzierung beruht. –

2

ich den Weg gefunden haben, generische Vorlagen auf alle Bedienelemente anzuwenden, ohne Template-Tasten. Die Lösung besteht darin, den Typ des Steuerelements als Stilschlüssel zu verwenden.

Beispiel:

<Application.Resources> 
    <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}"> 
     <Setter Property="Button.Background" Value="CornflowerBlue"/> 
     <Setter Property="Button.Template"> 
      <Setter.Value> 
       <ControlTemplate x:Name="MyTemplate"> 
        ... 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Application.Resources> 

hier die Style-Taste ist x: Key = "{x: Type-Taste}", so wird der Stil, ohne die Kontrolle zu allen Kontrollen des Typs Schaltfläche angewandt werden, um die Style-Eigenschaft erklärt eine statische oder dynamische Ressource sein.

+4

Wenn Sie keinen x: Key angeben, wird der TargetType automatisch als Key verwendet. TROCKEN! (Ich liebe auch CornflowerBlue!) –

+2

Außerdem haben einige seltsame Bits und Stücke eingebaute Schlüssel, über die man nur Bescheid wissen muss. Zum Beispiel die Trennzeichen in Menüs. http://devlicious.com/blogs/christopher_bennage/archive/2008/06/19/styling-separators-in-wpf.aspx –

Verwandte Themen