我有一个带乘法子系统的项目。并为每个子系统创建了一个项目。
我在这个项目中使用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
属性值,那么这将"覆盖"在父控件上设置的任何属性值。
我不知道如何在应用程序中设置所有Window
的FontSize
,但您可以在运行时设置应用程序中所有打开的Window
的FontSize
:
foreach (Window window in Application.Current.Windows) window.FontSize = 12;
此外,如果您想仅在特定类型的打开Window
上设置属性,则可以执行以下操作:
foreach (Window window in Application.Current.Windows.OfType<DialogWindow>())
window.FontSize = 12;