根据屏幕大小设置WPF字体大小

时间:2011-04-07 10:45:08

标签: .net wpf styles

我想要一个基于用户屏幕分辨率的默认字体大小。 即如果屏幕工作区宽度小于1024,则使用字体大小10,否则使用字体大小14。 我目前正在使用“SystemParameters.WorkArea.Width”来确定宽度

我可以设置一个全局字体大小,并有一个转换器来返回字体大小,但我真的很难弄清楚如何使它成功。即。当窗口大小改变时,让它检查字体大小应该是什么

<Window.Resources>

    <local:SetFontSize x:Key="myConverter" />

    <Style TargetType="{x:Type Control}" x:Key="baseStyle">
        <Setter Property="FontSize" Value="14"  />
        <Setter Property="FontFamily" Value="Calibri" />           

</Window.Resources>

我找到了下面的事件,但似乎无法将两者联系在一起(虽然我可能会采用这种错误的方式)

<Window.Triggers>
    <EventTrigger RoutedEvent="SizeChanged">          
    </EventTrigger>
</Window.Triggers>

2 个答案:

答案 0 :(得分:2)

为什么你还想要这个呢? Wpf使用抽象坐标,并使用当前的Monitor DPI和分辨率将它们转换为像素。因此,您的应用程序应自动扩展为在每个屏幕上看起来相似。 我会建议,使用弹性布局,滚动条等。使您的应用程序可以在较小的屏幕上使用。

答案 1 :(得分:2)

请记住,WPF应用程序是“DPI感知”且字体大小不是像素 - 所以如果用户使用不同的DPI设置来增加字体大小,它将自动反映在您的WPF应用程序中。希望用户可以按原样使用DPI设置吗?

(如果其他应用使用字体大小10而且它太小,而不是重写该应用,他们可能会调整他们的DPI - 如果没有其他应用使用字体大小10,它可能对所有用户来说都太小了)

我意识到这是一个无法回答的问题,但牺牲设计并为不能调整DPI设置的人进行黑客攻击是一种耻辱?我太消极了吗? :)