2009-05-04 5 views
2

Ich habe eine WPF-Anwendung (.NET 3.0, VS2008), die Daten in einem Registersteuer anzeigt. Benutzerdefinierte Farben sind für praktisch alle Steuerelemente in dieser Anwendung erforderlich: im Grunde weißer Vordergrund und grüner Hintergrund.Wie Sie XP-Designs in der WPF-Anwendung deaktivieren?

Mein Problem ist, dass, wenn ein XP-Design (sagt Luna) aktiv ist, wird sie automatisch Kontrollen machen angelegt, so dass mein weißer Text auf ... einen weißen Hintergrund geschrieben wird. Zum Beispiel auf den aktiven Registerkarte Element-Header: Unreadable tab item header

ich versucht habe: nutzlos:

  • die eingebettete Manifest-Datei aus der generierten Anwendung (in den Projekteigenschaften) zu entfernen.
  • die Verwendung des klassischen Windows-Thema in den Anwendungsressourcen zu erzwingen:

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

Dieser letzte Versuch war gut geeignet für alle Bedienelemente, mit Ausnahme der Registerkarte Steuerung, die nach wie vor wie oben zeigt.

Irgendeine Idee?

aktualisieren: Ich habe dieses Verhalten bin Verdacht ist aufgrund des benutzerdefinierten Stil Ich habe auf die Registerkarte Steuerelement angewandt werden:

<Window.Resources> 
    <Style x:Key="Custom"> 
    <Setter Property="Control.Background" Value="#FF47C7C8" /> 
    <Setter Property="Control.Foreground" Value="White" /> 
    </Style> 
    <Style TargetType="TabControl" BasedOn="{StaticResource Custom}" /> 
</Window.Resources> 

So wie kann ich das klassische Thema mit benutzerdefinierten Farben bekommen?

Antwort

2

Ihre beste Wette, ein konsistentes Verhalten und Aussehen für alle Betriebssysteme zu gewährleisten, wäre es, die TabItem Kontrolle neu Vorlage und dann einen Auslöser verwenden, um einen Teil Ihrer neuen Vorlage zu ändern, wenn ein TabItem ist ausgewählt. Probieren Sie etwas wie folgt aus:

<Grid> 
<Grid.Resources> 
    <Style x:Key="Custom"> 
    <Setter Property="Control.Background" Value="#FF47C7C8"/> 
    <Setter Property="Control.BorderBrush" Value="#FF47C7C8"/> 
    <Setter Property="Control.Foreground" Value="White"/> 
    </Style> 
    <Style BasedOn="{StaticResource Custom}" TargetType="TabControl"/> 
    <Style TargetType="TabItem"> 
    <Setter Property="Foreground" Value="White"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="{x:Type TabItem}"> 
      <Grid> 
      <Border 
       Name="Border" 
       Background="#FF47C7C8" 
       BorderBrush="#FFFFFF" 
       BorderThickness="1,1,1,1" 
       CornerRadius="2,2,0,0"> 
       <ContentPresenter 
       x:Name="ContentSite" 
       HorizontalAlignment="Center" 
       Margin="12,2,12,2" 
       VerticalAlignment="Center" 
       ContentSource="Header" 
       RecognizesAccessKey="True"/> 
      </Border> 
      </Grid> 
      <ControlTemplate.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Panel.ZIndex" Value="100"/> 
       <Setter TargetName="Border" Property="Background" Value="#FF47C7C8"/> 
       <Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,0"/> 
      </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 
</Grid.Resources> 
<TabControl> 
    <TabItem Header="Item 1"/> 
    <TabItem Header="Item 2"/> 
    <TabItem Header="Item 3"/> 
    <TabItem Header="Item 4"/> 
</TabControl> 

Bon Chance!

+0

Sie müssen es frome http://msdn.microsoft.com/en-us/library/ms752032.aspx bekommen. Merci en tous cas! – Mac

+0

Eigentlich habe ich gezwickt nur eine der „Simple Styles“ (http://blog.nerdplusart.com/simplestyles) Schnipsel in Kaxaml. Sie sind ein guter Ausgangspunkt, wenn Sie die Darstellung Ihrer WPF-Steuerelemente anpassen müssen. :) – Peter

Verwandte Themen