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

时间:2016-06-30 15:57:59

标签: c# wpf mvvm user-experience uiaccessibility

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

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

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

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

enter image description here

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

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

宽度和高度:

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

这不仅允许应用程序独立于分辨率(在大型DPI屏幕上看起来很小),如果用户在阅读时遇到问题,或者他们只是喜欢它,也会允许用户进行扩展。

非常简单。要仅影响字体大小,您可能应该查看组件的构建样式模板。我打赌你通过简单地设置一个带有字体大小的全局TextBlock样式来捕获大量文本 - 不确定你对默认样式的动态程度如何。

编辑:尝试使用样式:

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

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

你可能需要有一个wpf控件列表(按钮,复选框,文本框等),但它不会太难。

应该能够更改BaseFontSize。没有样式集的所有控件将在窗口或应用程序资源中将其用作默认值。因此,您不需要通过所有控件来确保它们具有样式集。