2010-08-25 8 views
5

Ich habe ein kleines Problem mit dem WPF-Projekt, an dem ich gerade arbeite. Ich bin neu in WPF. In meiner app.xaml verwende ich das Microsoft Aero Theme für meine Anwendung. Ich habe so etwas in meinem app.xamlÜberschreiben von Themen in WPF

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component/themes/Aero.NormalColor.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

Jetzt bekam, was ich möchte wissen, wie bestimmte Stileigenschaften außer Kraft zu setzen z.B. Für Buttons möchte ich den Schriftstil außer Kraft setzen und dabei den Rest des Aero-Stils beibehalten.

Wenn ich einen Stil für Schaltfläche in meinem Fenster Ressourcen definieren z.

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}" x:Key="RedTextBasedOnButton"> 
      <Setter Property="Foreground" Value="Red" /> 
     </Style> 

und einen Knopf auf dem obenen Stil

die Taste verliert all Aero-Stil Eigenschaften auf Basis definieren. Ich denke, das Problem mit der Art und Weise zu tun ist, ich die BasedOn Eigenschaft für den Stil

BasedOn="{StaticResource {x:Type Button}}" 

definiere ich glaube nicht, die Ressource statisch ist, wie es aus einer dll kommt, ist es wahrscheinlich so etwas wie dies sein sollte, . Nicht sicher, obwohl.

aber die obige löst Ausnahme und was wäre, wenn ich mehrere Resourcedictionary in meiner app.xaml hatte z. Luna und Klassiker. Wie kann ich feststellen, welche als Standard verwenden und gleichzeitig eine andere (z. B. Luna) für bestimmte Steuerelemente in meinem ui verwenden und überschreiben? Also werden einige meiner Buttons auf Luna-Style und einige auf Aero-Style mit einigen weiteren Modifikationen basieren?

Irgendeine Idee?

Grüße,

+0

möglich Duplikat [außer Kraft setzen außer Kraft gesetzt WPF Theme] (http://stackoverflow.com/questions/2377055/override-overriden-wpf-theme) –

+0

Führen Sie einen der Stile explizite Schlüssel, an die Sie binden konnten? – Killnine

Antwort

0

Für Ihre spezielle Frage auf

z.B. Für Buttons möchte ich den Schriftstil außer Kraft setzen und dabei den Rest des Aero-Stils beibehalten.

Ich würde versuchen, das Hinzufügen dieser in den Ressourcen-Wörterbuch:

<FontFamily x:Key="YourFont">Tahoma</FontFamily> 

diese dann in Ihrem Stil verwenden:

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}" x:Key="RedTextBasedOnButton"> 
    <Setter Property="FontFamily" Value="{StaticResource YourFont}"/> 
</Style> 

So könnte man die Fontfamily basierend auf einem einzigen Schlüssel ändern.

ich empfehlen, sich an dieser http://wpfthemes.codeplex.com/SourceControl/latest#WPF.Themes.Demo/Window1.xaml