Wenn Sie die Schriftart nicht explizit für innere Elemente festgelegt haben, übernehmen sie die übergeordnete Schriftart. Sie können also die Schriftgröße für eines der übergeordneten Elemente ändern (z. B. Window
selbst oder Grid
). Dadurch wird die Schriftgröße aller inneren Elemente geändert, für die die Schriftgröße nicht explizit angegeben wurde.
Wenn Ihre Schriftart jedoch unterschiedliche Größen haben sollte, ist es meiner Meinung nach am besten, die Schriftgröße der Elemente an die Schriftgröße des übergeordneten Fensters zu binden und mit einem Wertkonverter eine Skalierung der Schriftgröße vorzunehmen:
Wert Konverter wie folgt definieren:
using System;
using System.Windows.Data;
namespace WPFTest
{
public class FontSizeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return null;
double windowFontSize = (double)value;
var scale = System.Convert.ToDouble(parameter);
return windowFontSize * scale;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
Und es in xAML verwenden:
<Window x:Class="WPFTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:test="clr-namespace:WPFTest"
Title="Window1" Height="300" Width="300" FontSize="20" x:Name="window1">
<Window.Resources>
<test:FontSizeConverter x:Key="fontSizeConverter"/>
</Window.Resources>
<Grid>
<StackPanel Grid.Row="0" Grid.Column="0">
<TextBlock
FontSize="{Binding ElementName=window1, Path=FontSize, Converter={StaticResource ResourceKey=fontSizeConverter}, ConverterParameter=1.5}">
Text 1
</TextBlock>
<TextBlock FontSize="{Binding ElementName=window1, Path=FontSize, Converter={StaticResource ResourceKey=fontSizeConverter}, ConverterParameter=0.7}">
Text 2
</TextBlock>
<TextBlock >Text 3</TextBlock>
</StackPanel>
</Grid>
</Window>
ConverterParameter
als scal verwendet wird e der Schriftart des Elements, die sich auf das Fenster bezieht (angegeben in ElementName
Eigenschaft der Bindung).
In diesem Beispiel beträgt die Schriftart der ersten TextBlock
150% der Fensterschriftart und die Schriftart der zweiten TextBlock
ist 70% des Fensters. Das dritte TextBlock
folgt der Schriftgröße des Fensters.
Haben Ihre Rasterelemente unterschiedliche Schriftgrößen? –
für jetzt ich ihre Größen nicht angeben, aber mit den gleichen Schriftgrößen ist nicht unbedingt – Cynede
Ich habe eine andere Lösung zu meiner Antwort hinzugefügt. –