在运行时更改应用程序的字体大小



我有一个带乘法子系统的项目。并为每个子系统创建了一个项目。

我在这个项目中使用MVVMLight。

我为主项目设置了一个资源,并为它设置了字体大小

我想在运行时更改ui字体大小。

当我使用这个代码时,它只更改主窗口的字体大小,但我想更改所有子窗口的字体尺寸。

Application.Current.MainWindow.FontSize = 12;

与其设置新的字体大小,我在项目中使用ScaleTransform,也许这也是的一种方式

<Window>
 <Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="auto"/>
    </Grid.RowDefinitions>
   <Border Grid.Row="0">
        <Border.LayoutTransform>
            <ScaleTransform ScaleX="{Binding ElementName=zoomer, Path=Value}" ScaleY="{Binding ElementName=zoomer, Path=Value}"></ScaleTransform>
        </Border.LayoutTransform>
        <!-- content here -->
    </Border>
    <Slider Grid.Row="1" x:Name="zoomer" Width="100" Focusable="False" Value="1" 
            Minimum="1" Maximum="2.2" TickFrequency="0.1" IsSnapToTickEnabled="True"/>
   </Grid>
  </Window>

虽然FontSize属性是由子控件继承的,但在Window上设置它并让所有子控件继承该值可能很棘手。如果任何子控件都显式设置了自己的FontSize属性值,那么这将"覆盖"在父控件上设置的任何属性值。

我不知道如何在应用程序中设置所有WindowFontSize,但您可以在运行时设置应用程序中所有打开WindowFontSize

foreach (Window window in Application.Current.Windows) window.FontSize = 12;

此外,如果您想仅在特定类型的打开Window上设置属性,则可以执行以下操作:

foreach (Window window in Application.Current.Windows.OfType<DialogWindow>()) 
    window.FontSize = 12;

相关内容

  • 没有找到相关文章

最新更新