2016-06-30 1 views
1

J'ai construit une application de routage SIG, en utilisant WPF, MVVM et Visual Studio 2015.doivent être en mesure de changer la taille de la police dans une application entière pour accesibility

Lorsque je teste l'application sur un ordinateur portable, les polices semble plus petit que lorsque j'ai testé en mode débogage sur mon pc.

Existe-t-il un moyen de créer une fonction dans mes paramètres d'application afin qu'un utilisateur puisse augmenter la taille de toutes les polices, globalement, sans affecter les graphiques? J'espérais que ce serait similaire à une conception de page web avec le 'ctrl +'.

Toute aide serait grandement appréciée.

Répondre

6

J'ai ajouté des fonctionnalités similaires à mon application en utilisant ViewBox. Notez que cela ne change pas la taille de la police, mais "zoome" tous les aspects de l'interface utilisateur. Je ne sais pas si cela est exactement ce que vous voulez, mais c'est ce qu'il ressemble à vous donner une idée:

enter image description here

Pour cela, j'Enveloppez la Voir plus haut niveau (qui héberge l'ensemble du contenu, cela pourrait être fait au niveau de la fenêtre) dans un ViewBox, puis lié la largeur et la hauteur des propriétés dans le ViewModel que je pouvais modifier à l'aide d'un montant « zoom »:

<Viewbox SnapsToDevicePixels="True" > 
    <DockPanel Width="{Binding Width}" Height="{Binding Height}" SnapsToDevicePixels="True"> 
      ...content... 
    </DockPanel> 
</ViewBox> 

Avec la largeur et la hauteur:

private int BaseWidth = 1150; 
    private int BaseHeight = 750; 

    public int Width 
    { 
     get 
     { 
      return (int)(BaseWidth * appSettings.Zoom); 
     } 
    } 

    public int Height 
    { 
     get 
     { 
      return (int)(BaseHeight * appSettings.Zoom); 
     } 
    } 

Cela permet non seulement à l'application d'être indépendante de la résolution (tout ne sera pas très petit sur un grand écran DPI), mais elle permettra également aux utilisateurs d'évoluer s'ils ont des problèmes de lecture ou s'ils préfèrent simplement.

Assez simple. Pour n'effectuer que la taille de la police, vous devriez probablement envisager de créer des modèles de style pour les composants. Je serais prêt à parier que vous attraperiez beaucoup de texte en définissant simplement un style TextBlock global avec la taille de la police - vous ne savez pas à quel point vous pouvez être dynamique avec les styles par défaut.

Edit: Essayez ceci avec des styles:

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

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="FontSize" Value="{DynamicResource BaseFontSize}"/> 
</Style> 

Vous pourriez avoir une liste des contrôles WPF (boutons, cases à cocher, etc etc textboxes), mais il ne serait pas trop difficile.

BaseFontSize devrait pouvoir être changé. Tous les contrôles sans ensemble de styles l'utiliseront par défaut s'il se trouve dans les ressources de la fenêtre ou de l'application. Vous n'aurez donc pas besoin de passer tous les contrôles en vous assurant qu'ils ont un jeu de style.

+0

J'ai une vue de paramètres qui contrôle les choses globalement. Est-ce quelque chose que je pourrais mettre là-bas et affecter le reste des vues dans l'application, plutôt que d'avoir à ajuster chaque vue? – tCoe

+1

Vos paramètres affichent-ils "hôte" (les autres vues sont-elles directement liées aux enfants?) Ou s'agit-il simplement d'une vue contenant l'interface utilisateur pour les paramètres? – Joe

+1

Si aucune vue ne se trouve au-dessus de tout et contient toutes les sous-vues d'un ContentControl, je vous suggère d'ajouter la ViewBox directement à la fenêtre ou de créer une vue Navagation/Host et ViewModel simples. Cela dépend de la structure de votre interface graphique, un rapide diagramme/capture d'écran peut être utile. Utilisez-vous un framework MVVM? Comment sont structurées vos vues? – Joe