2009-02-12 5 views
6

Wenn ich ein benutzerdefiniertes Steuerelement mit WPF erstelle, wie kann ich Stile für das Steuerelement bereitstellen, die dem aktuell verwendeten Thema entsprechen (Aero, Luna, Classic usw.)?Wie passe ich die Stile meiner Steuerelemente dem aktuellen Thema an? (WPF)

Zum Beispiel würde Ich mag folgendes gelten bei der Verwendung von Aero:

<Style> 
    <Setter Property="Background" Value="White"/> 
</Style> 

Aber dann einen anderen Stil anwenden, wenn Luna mit:

<Style> 
    <Setter Property="Background" Value="#DFDFDF"/> 
</Style> 

Kann ich irgendwie erweitern die Basisthemen Unterstützung für meine neue Kontrolle bieten?

Antwort

7

Einige Links, die hilfreich sein könnte:

http://arbel.net/blog/archive/2006/11/03/Forcing-WPF-to-use-a-specific-Windows-theme.aspx

http://www.browsoft.com/tutorials/DefaultTheme.html

http://blogs.msdn.com/wpfsdk/archive/2007/07/31/using-themes-with-custom-controls.aspx

Grundsätzlich erstellen Sie Ressourcen Wörterbücher für die benutzerdefinierte Steuerelemente wie folgt benannt:

Classic.xaml (“Classic” Windows 9x/2000 look on Windows XP.) 
Luna.NormalColor.xaml (Default blue theme on Windows XP.) 
Luna.Homestead.xaml (Olive theme on Windows XP.) 
Luna.Metallic.xaml (Silver theme on Windows XP.) 
Royale.NormalColor.xaml (Default theme on the Windows XP Media Center Edition operating system.) 
Aero.NormalColor.xaml (Default theme on the Windows Vista operating system.) 

Legen Sie die verschiedenen Stile für Ihre Steuerelemente in diese Dateien und sie werden basierend auf dem aktuellen Thema des Betriebssystems geladen.

+0

Diese Links sind hilfreich, danke. Der entscheidende Punkt für mich war eine Änderung in AssemblyInfo.cs - die themeDictionaryLocation des [ThemeInfo] -Attributs von "None" auf "SourceAssembly" umzustellen. – ajlane

0

Sie können verschiedene Themen in WPF verwenden, indem Sie Ressourcenwörterbücher laden/entladen. Diese Wörterbücher sollten die Stile für Ihre Steuerelemente enthalten. Wenn Sie Wörterbücher austauschen, wendet WPF die Stile auf Ihre Steuerelemente an.

Zum Beispiel, wenn dies in WhiteStyle.xaml wäre und Sie es geladen haben, würden Ihre Textblöcke alle Text in einer weißen Schrift anzeigen.

<Style TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="White"/> 
</Style> 

, wenn Sie es für BlackStyle.xaml ausgelagert, die enthält

<Style TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="Black"/> 
</Style> 

Ihre Textblöcke würden Text in einem schwarz gefärbten Schriftart angezeigt werden soll. WPF behandelt viele Details für uns, wir müssen nur sagen, was die Details sind.

Austauschen von Ressourcen-Wörterbüchern ist relativ einfach, und ich überlasse es Ihnen, um herauszufinden. Googeln "WPF Themes" ist ein guter Anfang.

Verwandte Themen