需要能够在整个应用程序中更改字体大小以实现可访问性
Need to be able to change Font size across an entire application for accesibility
我使用 WPF、MVVM 和 Visual Studio 2015 构建了一个 GIS 路由应用程序。
当我在笔记本电脑上测试该应用程序时,字体似乎比我在我的电脑上以调试模式测试时要小。
有没有办法在我的应用程序设置中创建一个功能,以便用户可以在不影响图形的情况下全局增加所有字体的大小?我希望这类似于带有 'ctrl +' 的网页设计。
如有任何帮助,我们将不胜感激。
我已经使用 ViewBox 向我的应用程序添加了类似的功能。请注意,它不会更改字体大小,而是 "zooms" 用户界面的所有方面。不确定这是否正是您想要的,但这是给您一个想法的样子:
为此,我将最高级别的视图(承载所有内容,这可以在 Window 级别上完成)包装在 ViewBox 中,然后将宽度和高度绑定到 ViewModel 中的属性我可以使用 "zoom" 数量进行编辑:
<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 应该可以更改。如果它位于 window 或应用程序资源中,所有没有样式集的控件都将使用它作为默认值。因此,您无需检查所有控件以确保它们具有样式集。
我使用 WPF、MVVM 和 Visual Studio 2015 构建了一个 GIS 路由应用程序。
当我在笔记本电脑上测试该应用程序时,字体似乎比我在我的电脑上以调试模式测试时要小。
有没有办法在我的应用程序设置中创建一个功能,以便用户可以在不影响图形的情况下全局增加所有字体的大小?我希望这类似于带有 'ctrl +' 的网页设计。
如有任何帮助,我们将不胜感激。
我已经使用 ViewBox 向我的应用程序添加了类似的功能。请注意,它不会更改字体大小,而是 "zooms" 用户界面的所有方面。不确定这是否正是您想要的,但这是给您一个想法的样子:
为此,我将最高级别的视图(承载所有内容,这可以在 Window 级别上完成)包装在 ViewBox 中,然后将宽度和高度绑定到 ViewModel 中的属性我可以使用 "zoom" 数量进行编辑:
<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 应该可以更改。如果它位于 window 或应用程序资源中,所有没有样式集的控件都将使用它作为默认值。因此,您无需检查所有控件以确保它们具有样式集。