C# 需要能够在整个应用程序中更改字体大小以实现可访问性

C# 需要能够在整个应用程序中更改字体大小以实现可访问性,c#,wpf,mvvm,user-experience,uiaccessibility,C#,Wpf,Mvvm,User Experience,Uiaccessibility,我使用WPF、MVVM和Visual Studio 2015构建了一个GIS路由应用程序 当我在笔记本电脑上测试应用程序时,字体似乎比我在pc上以调试模式测试时要小 有没有办法在我的应用程序设置中创建一个功能,以便用户可以在不影响图形的情况下全局增加所有字体的大小?我希望这将类似于带有“ctrl+”的网页设计 任何帮助都将不胜感激。我已经使用ViewBox为我的应用程序添加了类似的功能。注意,它不会更改字体大小,而是“缩放”用户界面的所有方面。不确定这是否正是您想要的,但这看起来是给您一个想法:

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

当我在笔记本电脑上测试应用程序时,字体似乎比我在pc上以调试模式测试时要小

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


任何帮助都将不胜感激。

我已经使用ViewBox为我的应用程序添加了类似的功能。注意,它不会更改字体大小,而是“缩放”用户界面的所有方面。不确定这是否正是您想要的,但这看起来是给您一个想法:

为了实现这一点,我将最高级别的视图(承载所有内容,这可以在窗口级别完成)包装在一个ViewBox中,然后将宽度和高度绑定到ViewModel中的属性,我可以使用“缩放”量进行编辑:

这不仅允许应用程序独立于分辨率(在一个大的DPI屏幕上,任何东西都不会看起来很小),还允许用户在阅读东西有困难时,或者如果他们只是喜欢它,可以进行缩放

很简单。要仅影响字体大小,您可能需要查看组件的建筑样式模板。我敢打赌,只需将全局文本块样式设置为字体大小,就可以捕捉到大量文本,但不确定默认样式的动态性如何

编辑:使用样式尝试此操作:

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

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="FontSize" Value="{DynamicResource BaseFontSize}"/>
</Style>
12
您可能需要一个wpf控件列表(按钮、复选框、文本框等),但这不会太难


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

我已使用ViewBox为我的应用程序添加了类似的功能。注意,它不会更改字体大小,而是“缩放”用户界面的所有方面。不确定这是否正是您想要的,但这看起来是给您一个想法:

为了实现这一点,我将最高级别的视图(承载所有内容,这可以在窗口级别完成)包装在一个ViewBox中,然后将宽度和高度绑定到ViewModel中的属性,我可以使用“缩放”量进行编辑:

这不仅允许应用程序独立于分辨率(在一个大的DPI屏幕上,任何东西都不会看起来很小),还允许用户在阅读东西有困难时,或者如果他们只是喜欢它,可以进行缩放

很简单。要仅影响字体大小,您可能需要查看组件的建筑样式模板。我敢打赌,只需将全局文本块样式设置为字体大小,就可以捕捉到大量文本,但不确定默认样式的动态性如何

编辑:使用样式尝试此操作:

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

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="FontSize" Value="{DynamicResource BaseFontSize}"/>
</Style>
12
您可能需要一个wpf控件列表(按钮、复选框、文本框等),但这不会太难


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

我有一个全局控制内容的设置视图。这是不是我可以放在上面并影响应用程序中的其他视图,而不必调整每个视图?您的设置是否查看“主机”(将其他视图作为直接子视图?),或者它只是一个包含设置UI的视图?如果您没有位于所有视图之上并包含所有子视图的视图,比如说,一个ContentControl,那么我建议您直接将ViewBox添加到窗口中,或者创建一个简单的Navagation/Host视图和ViewModel。这取决于GUI的结构,快速图表/屏幕截图可能会有所帮助。您使用的是MVVM框架吗?您的视图是如何构造的?我已经用ScaleTransform实现了这一点,但这更简单。非常灵活。您可以在适用的情况下更改这些样式,但也可以通过不设置键来覆盖没有显式应用样式时使用的默认样式。我将添加到我的答案中。我有一个全局控制事物的设置视图。这是不是我可以放在上面并影响应用程序中的其他视图,而不必调整每个视图?您的设置是否查看“主机”(将其他视图作为直接子视图?),或者它只是一个包含设置UI的视图?如果您没有位于所有视图之上并包含所有子视图的视图,比如说,一个ContentControl,那么我建议您直接将ViewBox添加到窗口中,或者创建一个简单的Navagation/Host视图和ViewModel。这取决于GUI的结构,快速图表/屏幕截图可能会有所帮助。您使用的是MVVM框架吗?您的视图是如何构造的?我已经用ScaleTransform实现了这一点,但这更简单。非常灵活。您可以在适用的情况下更改这些样式,但也可以通过不设置键来覆盖没有显式应用样式时使用的默认样式。我将补充我的答案。
<sys:Double x:Key="BaseFontSize">12</sys:Double>

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