2009-11-13 10 views
26

Weiß jemand, wie man einen WPF-Stil im Code hinter, ich kann nichts im Web oder MSDN-Dokumente finden. Ich habe dies versucht, aber es funktioniert nicht:Erstellen eines Stils in Code hinter

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

breakInfoControl.dataTextBlock.Style = s; 

Antwort

65

Sie müssen Setter Stil hinzuzufügen, anstatt mit Registername. Der folgende Code im Window_Loaded-Ereignis erstellt einen neuen TextBlock-Stil, der als Standard für alle Instanzen eines TextBlocks innerhalb des Fensters verwendet wird. Wenn Sie es lieber explizit für einen bestimmten TextBlock festlegen möchten, können Sie die Style-Eigenschaft dieses Steuerelements festlegen, anstatt den Stil dem Ressourcenwörterbuch hinzuzufügen.

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

Ich habe mich gefragt, wie man das auch macht. Danke für die Lösung, die für mich funktioniert hat. –

8

Dies sollte Sie bekommen, was Sie brauchen:

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

Sieht aus wie das funktioniert auch, danke –

+0

dieser Ansatz funktioniert nicht für mich. –

+1

Diese Antwort ist auch von vor 5 Jahren, also können sich die Dinge seitdem geändert haben – oltman