2010-11-28 3 views
0

Je suis en train de définir un style global pour contrôler plusieurs types dérivés en mettant dans mon app.xaml:WPF- Pourquoi ces styles ne fonctionnent-ils pas?

<Style TargetType="{x:Type Control}"> 
    <Setter Property="Background" Value="{Binding BackgroundBrush, Source={x:Static m:Settings.Instance}, UpdateSourceTrigger=PropertyChanged}" /> 
    <Setter Property="Foreground" Value="{Binding ForegroundBrush, Source={x:Static m:Settings.Instance}, UpdateSourceTrigger=PropertyChanged}" /> 
    <Setter Property="BorderBrush" Value="{Binding ForegroundBrush, Source={x:Static m:Settings.Instance}, UpdateSourceTrigger=PropertyChanged}" /> 
    <Setter Property="UseLayoutRounding" Value="True" /> 
</Style> 

<Style TargetType="{x:Type Window}" BasedOn="{StaticResource {x:Type Control}}" /> 

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Control}}" /> 

En ce moment, le style de fenêtre ne fonctionne que dans la fenêtre de studio de design visuel et le style de bouton n » t travail du tout. Qu'est ce que j'ai mal fait?

+0

Quelle version de Visual Studio et .NET Framework utilisez-vous? J'ai eu des problèmes pour faire fonctionner les styles avec .NET 4.0 (WPF 4.0). Voir http://stackoverflow.com/questions/4239714/why-cant-i-style-a-control-with-the-aero-theme-applied-in-wpf-4-0. – devuxer

Répondre

1

J'ai trouvé parfois que BasedOn est plutôt particulier. Si vous affectez une touche, elle a tendance à fonctionner plus souvent. Je ne suis pas sûr si les liaisons de valeur provoquent votre problème comme je ne l'ai pas fait et la classe statique externe à utiliser.

<Grid.Resources> 
    <Style x:Key="simpleStyle" TargetType="{x:Type Control}"> 
     <Setter Property="Background" Value="Blue" /> 
     <Setter Property="Foreground" Value="Yellow" /> 
     <Setter Property="BorderBrush" Value="CornflowerBlue" /> 
    </Style> 

    <Style TargetType="{x:Type Control}" BasedOn="{StaticResource simpleStyle}" /> 

     <Style TargetType="{x:Type Window}" BasedOn="{StaticResource simpleStyle}" /> 

    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource simpleStyle}" /> 
</Grid.Resources> 
<Button Height="50" Width="100"> 
    Hello 
</Button> 
Questions connexes