2008-11-27 6 views
2

actuellement je force mon application WPF pour utiliser le thème de luna, peu importe quoi, avec ce code XAMLComment puis-je hériter/remplacer un style forcé d'un thème Windows?

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Styles.xaml" /> 
      <ResourceDictionary Source="NavigationCommands.xaml" /> 
      <ResourceDictionary Source="/RibbonControlsLibrary;component/Themes/Office2007Blue.xaml"/> 
      <ResourceDictionary Source="/PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;;component/Themes/luna.normalcolor.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

et maintenant je veux étendre le style de chaque zone de texte avec ce déclencheur de validation

<Style TargetType="TextBox"> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="true"> 
      <Setter Property="Background" Value="#d3e1f3"></Setter> 
      <Setter Property="ToolTip" 
      Value="{Binding RelativeSource={RelativeSource Self}, 
        Path=(Validation.Errors)[0].ErrorContent}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

mais ce déclencheur ne fonctionne pas, car j'ai forcé le thème luna. (sans le thème forcé tout fonctionne comme il se doit, mais ne semble pas comme il se doit :() est-il un moyen de forcer le thème luna et étendre son style? Probablement sur la propriété BasedOn?

atm i défini une clé pour le style en question et ajouté à chaque zone de texte à la main, qui fonctionne mais pas la plus jolie chemin à parcourir.

tia

Répondre

1

Essayez

<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}"> 
+0

qui fait pas de travail non plus, mais merci quand même –

1

la syntaxe pour BasedOn les styles de caractères sont les suivants:

<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}"> 

HTH

+0

pas de chance :( l'approche ov La propriété basedon ne fonctionne pas. le style est ignoré. merci. –

0

Avez-vous essayé de mettre la lunule ResourceDictionary premier et votre dernier ResourceDictionary? Je peux imaginer que le thème luna remplace votre style.

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;;component/Themes/luna.normalcolor.xaml" /> 
      <ResourceDictionary Source="/RibbonControlsLibrary;component/Themes/Office2007Blue.xaml"/> 
      <ResourceDictionary Source="Styles.xaml" /> 
      <ResourceDictionary Source="NavigationCommands.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 
0

Utilisez le dessus

<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}"> 

mais assurez-vous également que vos dictionnaires sont inclus dans le bon ordre - premier ceux que vous basez votre style sur

<Application.Resources> 
<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="/RibbonControlsLibrary;component/Themes/Office2007Blue.xaml"/> 
     <ResourceDictionary Source="/PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;;component/Themes/luna.normalcolor.xaml" /> 

     <ResourceDictionary Source="Styles.xaml" /> 
     <ResourceDictionary Source="NavigationCommands.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

Questions connexes