2016-06-30 3 views
1

ich eine GIS-Routing-Anwendung erstellt habe, mit WPF, MVVM und Visual Studio 2015müssen in der Lage sein, Schriftgröße über die gesamte Anwendung zu ändern für accesibility

Wenn ich die App auf einem Laptop zu testen, die Schriften scheinen kleiner als wenn ich im Debug-Modus auf meinem PC getestet habe.

Gibt es eine Möglichkeit, ein Feature in meinen Anwendungseinstellungen zu erstellen, damit ein Benutzer global alle Schriftarten vergrößern kann, ohne die Grafiken zu beeinträchtigen? Ich hatte gehofft, dass dies einem Webpage-Design mit dem 'Strg +' ähnlich sein würde.

Jede Hilfe würde sehr geschätzt werden.

Antwort

6

Ich habe ähnliche Funktionen zu meiner Anwendung mit ViewBox hinzugefügt. Beachten Sie, dass die Schriftgröße nicht geändert wird, sondern alle Aspekte der Benutzeroberfläche "vergrößert" werden. Nicht sicher, ob dies ist genau das, was Sie wollen, aber das ist, was es aussieht wie Sie eine Idee geben:

enter image description here

Um dies zu erhalten, habe ich das höchste Niveau Ansicht gewickelt (dass alle Inhalte hostet, könnte dies auf der Fensterebene) in einem ViewBox erfolgen und band dann die Breite und Höhe auf Objekte im Ansichtsmodell, dass ich eine „Zoom“ Menge mit bearbeiten könnte:

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

Mit der Breite und Höhe:

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); 
     } 
    } 

Dies ermöglicht nicht nur eine unabhängige Auflösung der Anwendung (auf einem großen DPI-Bildschirm sieht alles nicht winzig aus), sondern ermöglicht Benutzern auch eine Skalierung, wenn sie Probleme beim Lesen haben oder wenn sie es einfach bevorzugen.

Ziemlich einfach. Um nur die Schriftgröße zu beeinflussen, sollten Sie sich wahrscheinlich Baustilvorlagen für die Komponenten ansehen. Ich würde wetten, dass Sie einen Großteil des Textes fangen würden, indem Sie einfach einen globalen TextBlock-Stil mit der Schriftgröße festlegen - nicht sicher, wie dynamisch Sie mit den Standardstilen sein können.

Edit: Versuchen Sie dies mit Stile:

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

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

Sie können eine Liste der WPF-Steuerelemente (Schaltflächen, Kontrollkästchen, Textfelder usw. usw.) haben müssen, aber es wäre nicht allzu schwierig sein.

BaseFontSize sollte geändert werden können. Alle Steuerelemente ohne einen Stilsatz verwenden dies als Standard, wenn es sich in Fenster- oder App-Ressourcen befindet. Sie müssen also nicht alle Steuerelemente durchlaufen, um sicherzustellen, dass sie einen Stilsatz haben.

+0

Ich habe eine Einstellungsansicht, die Dinge global steuert. Ist das etwas, das ich dort anlegen könnte und den Rest der Ansichten in der Anwendung beeinflussen würde, anstatt jede Ansicht anpassen zu müssen? – tCoe

+1

Werden in Ihren Einstellungen "Host" angezeigt (die anderen Ansichten als direkt untergeordnet?) Oder handelt es sich einfach um eine Ansicht, die die Benutzeroberfläche für Einstellungen enthält? – Joe

+1

Wenn Sie keine Ansicht haben, die über allem liegt und jede Unteransicht enthält, z. B. ein ContentControl, dann schlage ich vor, dass Sie die ViewBox direkt zum Fenster hinzufügen oder eine einfache Navagation/Host-Ansicht und ViewModel erstellen. Es hängt davon ab, wie Ihre GUI strukturiert ist, ein schnelles Diagramm/Screenshot kann hilfreich sein. Verwenden Sie ein MVVM-Framework? Wie sind Ihre Ansichten strukturiert? – Joe

Verwandte Themen