2009-11-13 7 views
26

Est-ce que quelqu'un sait comment créer un style wpf dans le code derrière, je ne trouve rien sur le web ou les documents MSDN. Je l'ai essayé, mais il ne fonctionne pas:Création d'un style dans le code derrière

Style s = new Style(typeof(TextBlock)); 
s.RegisterName("Foreground", Brushes.Green); 
s.RegisterName("Text", "Green"); 

breakInfoControl.dataTextBlock.Style = s; 

Répondre

65

Vous devez ajouter setters au style plutôt que d'utiliser RegisterName. Le code suivant, dans l'événement Window_Loaded, créera un nouveau style TextBlock qui deviendra le style par défaut pour toutes les instances d'un TextBlock dans la fenêtre. Si vous préférez le définir explicitement sur un TextBlock particulier, vous pouvez définir la propriété Style de ce contrôle plutôt que d'ajouter le style au dictionnaire Resources.

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    Style style = new Style(typeof (TextBlock)); 
    style.Setters.Add(new Setter(TextBlock.ForegroundProperty, Brushes.Green)); 
    style.Setters.Add(new Setter(TextBlock.TextProperty, "Green")); 
    Resources.Add(typeof (TextBlock), style); 
} 
+0

Je me demandais comment faire cela aussi. Merci pour la solution cela a fonctionné pour moi. –

8

Cela devrait vous obtenir ce dont vous avez besoin:

Style style = new Style 
{ 
    TargetType = typeof(Control) 
}; 
style.Setters.Add(new Setter(Control.ForegroundProperty, Brushes.Green)); 
myControl.Style = style; 
+0

Cela ressemble à cela fonctionne, merci –

+0

cette approche ne fonctionne pas pour moi. –

+1

Cette réponse est aussi d'il y a 5 ans, donc les choses ont peut-être changé depuis lors – oltman

Questions connexes