2016-04-27 2 views
0

Я пытаюсь установить размер шрифта динамически в WPF. Вот что я сделал до сих пор.Установить размер шрифта динамически в WPF

App.xaml

<Style TargetType="{x:Type FrameworkElement}" x:key="baseStyle"></Style> 
<Style TargetType="{x:Type TextBlock}" BasedOn={StaticResource baseStyle}"/> 

App.xaml.cs

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 
     double fontSize = System.Drawing.SystemFonts.IconTitleFont.Size; 
     Style style = new Style{ TargetType = typeof(FrameworkElement)}; 
     style.Setter.Add(new Setter(TextElement.FontSizeProperty, fontSize)); 
     Application.Current.Resources["baseStyle"] = style; 

    } 
} 

MainWindow.xaml

<TextBlock Text="This is Sparta!!!"/> 

Редакция:

Когда OnStartup, называемый ресурсом baseStyle, недоступен. Таким образом, стиль присваивается нулевому значению, из-за которого стиль не применяется. Любой, кто имеет идею реализовать его каким-то другим способом. Ваша помощь будет оценена по достоинству.

Редактировать: Есть одна вещь, которую я хотел бы уточнить. На самом деле я написал код App.xaml и App.xaml.cs в словаре ресурсов и объединил его в App.xaml. Код, написанный в OnStartup, написан в конструкторе этого кода за классом.

ответ

1

С небольшой модификацией ваш код работает. Просто удалите и добавьте базовый стиль

Style style = new Style { TargetType = typeof(FrameworkElement) }; 
      style.Setters.Add(new Setter(TextElement.FontSizeProperty, fontSize)); 
      Application.Current.Resources.Remove("baseStyle"); 
      Application.Current.Resources.Add("baseStyle" , style); 
+0

Ну, это не проблема брата, я уже это сделал. Проблема в том, что он не взял код позади стиля. –

+0

Я отредактировал свой ответ, надеюсь, что он hepls – Johannes

+0

Спасибо вам за ваши усилия, но это тоже не сработало. Если вы хотите подтвердить, просто добавьте эту строку в свой код ** style.Setters.Add (новый Setter (TextElement.BackgroundProperty, Brushes.Azure)); ** Цвет не изменится. –

Смежные вопросы