我使用WPF,MVVM和Visual Studio 2015构建了一个GIS路由应用程序。
当我在笔记本电脑上测试应用程序时,字体看起来比我在电脑上以调试模式测试时要小。
有没有办法在我的应用程序设置中创建一个功能,这样用户可以在不影响图形的情况下全局增加所有字体的大小?我希望这与使用' ctrl +'的网页设计类似。
非常感谢任何帮助。
答案 0 :(得分:6)
我使用ViewBox为我的应用程序添加了类似的功能。请注意,它不会改变字体大小,而是#34;缩放"用户界面的所有方面。不确定这是否正是你想要的,但这就是给你一个想法的看法:
为了实现这一点,我在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。没有样式集的所有控件将在窗口或应用程序资源中将其用作默认值。因此,您不需要通过所有控件来确保它们具有样式集。