WPF global font size?

Up vote 6 down vote favorite 5 share g+ share fb share tw.

I'm creating a WPF app and I would like to know the best way to be able to change the font size for every element in the ui. Do I create a resource dictionary and set Styles to set the font size for all the controls I use? What is the best practice?

Wpf fonts link|improve this question edited Jul 31 '11 at 0:15Dave Clemmer1,77331030 asked May 21 '09 at 15:07Jose2,5161341 73% accept rate.

I'd do it this way: That way, if I want to change ALL the controls, I'd just have to change the "baseStyle" style, the rest would just inherit from it. (That's what BasedOn property those, you can also extend the base style if you create other setters inside of the inherited style).

3 And if you need to change the font size on the fly, make sure that all of them are declared to DynamicResource, both in the Styles and in the Style references to "baseStyle". – Jeff Wain May 21 '09 at 19:39 Seroiouslly? I tried doing that and I get this error: Property 'BaseOn' does not support values of type 'DynamicResourceExtension'.

I just changed the code from StaticResource to DynamicResource. What do you think is missing? – Carlo May 21 '09 at 20:05 Forgot about that little issue.

We have all our declarations set up as Setters declared per-control so that we don't have huge hierarchies. This post explains it pretty well. Stackoverflow.com/questions/585429/… – Jeff Wain May 21 '09 at 21:32 I got a little curious about this issue and I went ahead to do some tests, but it seems like once you've set and are using a StaticResource, you can't modify it.

Maybe a different solution is needed if you want to change the size at some point in your app. – Carlo May 21 '09 at 21:59 I don't think simply changing the font (face/size) of an item will change its size. – Ian Boyd May 21 '097 at 3:53.

FontSizeProperty is inherited from Parent Control. So you just need to change FontSize of your main window. If you don't need dynamic behaviour this should work: Add a style for Window to your ResourceDictionary Apply the style to your main form (will not be applied implicit because its a derived type) Style = (Style)FindResource(typeof (Window)).

Application.Current.MainWindow. FontSize = _appBodyFontSize; This way you can change the Font Size at run time also.

For any styles in WPF, you should have a separate resource dictionary that contains the styles for your app. If you want to have a single Font Size that's reused throughout the app then just create a style for that font size. You can either give it a unique name/key to use explicitly or you can set a targetType that will transcend throughout the app.

Explicit Key: *Note this style can be used with controls that have contentPresenters For all textblocks in the app.

If you need to programmatically change global FontSize, not statically (XAML), to be applied once for all your windows, you can do: TextElement. FontSizeProperty. OverrideMetadata( typeof(TextElement), new FrameworkPropertyMetadata(16.0)); TextBlock.

FontSizeProperty. OverrideMetadata( typeof(TextBlock), new FrameworkPropertyMetadata(16.0)); This values are applied to any TextBlock, Labels and almost any text in any windows, whereas it has not a explicit FontSize defined. But this does not affect for TextBox, you have to write a similar code for it or any other special controls.

Another option is to define the FontFamily and FontSize as resources. Calibri 12 That way you can use them in your setters.

TextElement. FontSize is an inherit property, which means you can simply set the font size at root element, and all the children elements will use that size (as long as you don't change them manually).

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions