WPF - change global font size at runtime

I need to add one functionality to my simple application - to allow user to change font size for whole aplication. Is it easy to do? Can you give me any hint how to start? It's required to have only 3 predefined font sizes but the first and only solution which came to my mind is to create 3 different themes. Is it possible to make it simplier?

Answers


Luckily, FontSize uses Property Value Inheritance. That means that so long as don't override it, FontSize will be automatically propagated to all child text elements. As a result, you can set a single:

<Window FontSize="10" ...>

and it will apply to all text elements in that window that don't have a font size. To change it in code is simple as well:

this.FontSize = 20;

in the code-behind of the window will change all unspecified font sizes on the fly. This also works for things that don't seem to support font size:

<Grid TextElement.FontSize="15" ...>

The same is true for the other text properties you mentioned.


Application.Current.MainWindow.FontSize = 12;

At the most basic level you need to bind the FontSize property of your TextBlocks etc, to a variable which you can then change to be one of your three predefined values:

<TextBlock FontFamily="Arial" Text="Sample text" FontSize="{Binding TextSize}" />

However, you would need to remember to add this to all your text.

A better solution would be to bind the size of the styles you use, but again all text would have to be styled. If you used an implicit style then you wouldn't have to remember to add the reference to your text, but all your text would have to look the same. Whether that's a problem or not will depend on your application.


Need Your Help

UIKit and unit testing

iphone unit-testing xcode

I'm tying to implement some test cases for my iPhone app. I have successfully set up the UnitTest-Target as described here: iPhone development guide I'm also able to build a simple test case: ...

How to dynamically extend PickCanvas object for MouseListener click event in a Java Applet (using Java3D)?

java applet java-3d mouselistener canvas3d

I am developing a Java applet using Java3D. It starts up with a BranchGroup object (containing a set of points) which is added to a Locale object. A PickCanvas is created starting from the Locale a...

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.