2010-12-28 11 views
6

Potrzebuję dodać jedną funkcjonalność do mojej prostej aplikacji - aby umożliwić użytkownikowi zmianę rozmiaru czcionki dla całej aplikacji. Czy to łatwe? Czy możesz dać mi wskazówkę, jak zacząć? Wymagane jest posiadanie tylko 3 wstępnie zdefiniowanych rozmiarów czcionek, ale pierwszym i jedynym rozwiązaniem, które przyszło mi do głowy, jest stworzenie 3 różnych motywów. Czy można go uprościć?WPF - zmiana globalnej wielkości czcionki w czasie wykonywania

Odpowiedz

12

Na szczęście FontSize używa Property Value Inheritance. Oznacza to, że dopóki go nie zastąpi, FontSize będzie automatycznie propagowany do wszystkich potomnych elementów tekstowych. W rezultacie, można ustawić jedno:

<Window FontSize="10" ...> 

i będzie mieć zastosowanie do wszystkich elementów tekstowych w tym oknie, które nie mają rozmiar czcionki. Zmiana kodu jest również prosta:

this.FontSize = 20; 

w polu kodu okna zmieni wszystkie nieokreślone rozmiary czcionek w locie. Działa to również w przypadku elementów, które nie obsługują rozmiaru czcionki:

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

To samo dotyczy innych właściwości tekstu, o których wspomniałeś.

+0

Jest to niezwykle proste rozwiązanie w porównaniu do innych, jakie widziałem. Dzięki za pomoc! – TheBlindSpring

0

Na najbardziej podstawowym poziomie trzeba związać własność swoją TextBlocks itp FontSize, do zmiennej, które można następnie zmienić za jeden z trzech zdefiniowanych wartości:

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

jednak będzie trzeba pamiętaj, aby dodać ten tekst do wszystkie swój tekst.

Lepszym rozwiązaniem byłoby powiązanie rozmiaru używanych stylów, ale znowu cały tekst musiałby być stylizowany. Jeśli używałeś niejawnego stylu, nie musiałbyś pamiętać, aby dodać odniesienie do tekstu, ale cały tekst musiałby wyglądać tak samo. To, czy to problem, zależy od twojej aplikacji.

3
Application.Current.MainWindow.FontSize = 12; 
Powiązane problemy