77 votes

WPF taille de police globale

Je suis de la création d'une application WPF et je voudrais savoir le meilleur moyen pour être en mesure de modifier la taille de la police pour chaque élément de l'interface utilisateur. Dois-je créer un dictionnaire de ressources et de définir des Styles pour définir la taille de police pour tous les contrôles-je utiliser?

Quelles sont les bonnes pratiques?

106voto

Carlo Points 8638

J'aimerais faire de cette façon:

<Window.Resources>
    	<Style TargetType="{x:Type Control}" x:Key="baseStyle">
    		<Setter Property="FontSize" Value="100" />
    	</Style>
    	<Style TargetType="{x:Type Button}" BasedOn="{StaticResource baseStyle}"></Style>
    	<Style TargetType="{x:Type Label}" BasedOn="{StaticResource baseStyle}"></Style>
    	<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource baseStyle}"></Style>
    	<Style TargetType="{x:Type ListView}" BasedOn="{StaticResource baseStyle}"></Style>
    	<!-- ComboBox, RadioButton, CheckBox, etc... -->
    </Window.Resources>

De cette façon, si je veux changer TOUS les contrôles, j'avais juste changer le "baseStyle" style", le reste serait juste d'hériter d'elle. (C'est ce que Basée propriété de ceux-ci, vous pouvez également prolonger le style de base si vous créez d'autres setters à l'intérieur de l'héritage de style)

46voto

Matze Points 359

FontSizeProperty est héritée de Contrôle Parent. Donc, vous avez juste besoin de changer FontSize de votre fenêtre principale.

Si vous n'avez pas besoin d'comportement dynamique qui devrait fonctionner:

Ajouter un style de Fenêtre à votre ResourceDictionary

<Style TargetType="{x:Type Window}">
     <Setter Property="FontSize" Value="15" />
</Style>

Appliquer le style de votre formulaire principal (ne sera pas appliquée implicite parce que c'est un type dérivé)

 Style = (Style)FindResource(typeof (Window));

38voto

<Window> a une propriété FontSize.

De sorte que vous pouvez régler la fontsize dans l'élément si vous voulez changer la taille de la police dans tous les éléments à l'intérieur de cette fenêtre.

<Window FontSize="12">

</Window>

35voto

Neal Points 61

Une autre option est de définir les FontFamily et FontSize en tant que ressources.

<FontFamily x:Key="BaseFontFamily">Calibri</FontFamily>
<sys:Double x:Key="BaseFontSize">12</sys:Double>

De cette façon, vous pouvez les utiliser dans vos organismes de normalisation.

12voto

Vipul Points 608
Application.Current.MainWindow.FontSize = _appBodyFontSize;

De cette façon, vous pouvez modifier la Taille de la Police au moment de l'exécution aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X