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

Wpf 在运行时更改应用程序字体大小,wpf,mvvm,styles,mvvm-light,font-size,Wpf,Mvvm,Styles,Mvvm Light,Font Size,我有一个多子系统的项目。并为每个子系统创建了一个项目 我在这个项目中使用MVVMLight 我为主项目设置了一个资源,并为它设置了字体大小 我想在运行时更改ui字体大小 当我使用此代码时,它只更改主窗口的字体大小,但我想更改所有子窗口的字体大小 Application.Current.MainWindow.FontSize = 12; 我在项目中使用ScaleTransform,而不是设置一个新的fontsize,也许这也是一种适合您的方法 <Window> <Grid&g

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

我在这个项目中使用MVVMLight

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

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

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

Application.Current.MainWindow.FontSize = 12;

我在项目中使用ScaleTransform,而不是设置一个新的fontsize,也许这也是一种适合您的方法

<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
属性,但在
窗口中设置该属性并让所有子控件继承该值可能会比较困难。如果任何子控件已显式设置其自己的
FontSize
属性值,则该属性值将“覆盖”在父控件上设置的任何属性值

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

foreach (Window window in Application.Current.Windows) window.FontSize = 12;
此外,如果要仅在打开的
窗口
上设置特定类型的属性,则可以执行以下操作:

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

谢谢,但我有一个在应用程序中使用的multiply项目,我想在一个特殊项目中用一个按钮更改所有项目的字体大小。然后在应用程序设置中保存“new”fontsize并绑定到它是的,我可以为打开的窗口设置字体大小,但是有没有解决方案可以为ui设置字体大小,当打开新窗口时,设置字体大小。你用什么方法打开一个新的
窗口
?我用
窗口.Show()window.FontSize=12首先?谢谢,但我在另一个项目中设置了字体大小,打开窗口是另一个项目,我不保存字体大小。