Создание стиля в коде позади - PullRequest
31 голосов
/ 13 ноября 2009

Кто-нибудь знает, как создать стиль wpf в коде, я не могу найти ничего в Интернете или документах MSDN. Я пробовал это, но это не работает:

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

breakInfoControl.dataTextBlock.Style = s;

Ответы [ 2 ]

74 голосов
/ 13 ноября 2009

Вам нужно добавить сеттеры к стилю, а не использовать RegisterName. Следующий код в событии Window_Loaded создаст новый стиль 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);
}
9 голосов
/ 13 ноября 2009

Это должно дать вам то, что вам нужно:

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