需要能够在整个应用程序中更改字体大小以便访问

tCo*_*Coe 1 c# wpf user-experience mvvm uiaccessibility

我使用WPF,MVVM和Visual Studio 2015构建了一个GIS路由应用程序.

当我在笔记本电脑上测试应用程序时,字体看起来比我在电脑上以调试模式测试时要小.

有没有办法在我的应用程序设置中创建一个功能,以便用户可以在不影响图形的情况下全局增加所有字体的大小?我希望这与使用'ctrl +'的网页设计类似.

任何帮助将不胜感激.

Joe*_*Joe 6

我使用ViewBox为我的应用程序添加了类似的功能.请注意,它不会更改字体大小,而是"缩放"用户界面的所有方面.不确定这是否正是你想要的,但这就是给你一个想法:

在此输入图像描述

为了实现这一点,我在ViewBox中包装了最高级别的View(托管所有内容,这可以在Window级别完成),然后将Width和Height绑定到ViewModel中我可以使用"zoom"编辑的属性量:

<Viewbox SnapsToDevicePixels="True" >
    <DockPanel Width="{Binding Width}" Height="{Binding Height}" SnapsToDevicePixels="True">
          ...content...
    </DockPanel>
</ViewBox>
Run Code Online (Sandbox Code Playgroud)

随着宽度和高度:

    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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这不仅允许应用程序独立于分辨率(一切都不会在大型DPI屏幕上看起来很小),它还允许用户在读取内容时遇到问题,或者只是喜欢它.

很简单.要仅影响字体大小,您可能应该查看组件的构建样式模板.我敢打赌,你只需设置一个具有字体大小的全局TextBlock样式就可以捕获很多文本 - 不确定你对默认样式的动态程度.

编辑:尝试使用样式:

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

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="FontSize" Value="{DynamicResource BaseFontSize}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

您可能必须有一个wpf控件列表(按钮,复选框,文本框等),但这不会太难.

BaseFontSize应该可以更改.没有样式集的所有控件都将使用它作为默认值,如果它在窗口或应用程序资源中.因此,您无需通过所有控件来确保它们具有样式集.