2009-11-13 4 views
26

누군가 코드 뒤에 wpf 스타일을 만드는 방법을 알고 있습니다. 웹이나 MSDN 문서에서 아무 것도 찾을 수 없습니다. 나는 이것을 시도했지만 그것은 작동하지 않습니다 :코드 뒤에 스타일 만들기

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

breakInfoControl.dataTextBlock.Style = s; 

답변

65

당신은 RegisterName을 사용하지 않고 스타일에 setter를 추가해야합니다. Window_Loaded 이벤트의 다음 코드는 Window 내에서 TextBlock의 모든 인스턴스에 대한 기본값이 될 새 TextBlock 스타일을 만듭니다. 하나의 특정 TextBlock에 명시 적으로 설정하려는 경우 리소스 사전에 스타일을 추가하는 대신 해당 컨트롤의 Style 속성을 설정할 수 있습니다.

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

나는 이것을 어떻게하는지 궁금합니다. 이것이 나를 위해 일한 해결책에 감사드립니다. –

8

이 당신이 필요로하는 무엇을 얻어야한다 :

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

감사합니다. –

+0

감사합니다.이 방법이 저에게 효과적이지 않습니다. –

+1

이 대답은 5 년 전의 일이기도하므로 그 이후로 상황이 바뀔 수도 있습니다. – oltman