我正在尝试根据它的宽度缩放TextBlock的字体大小(WPF)。 问题是我收到了这个错误:
参数值必须介于'0'和'35791.3940666667'之间。参数名称:paragraphProperties.DefaultTextRunProperties.FontRenderingEmSize
只有在.xaml文件中定义TextBlock的文本时才会发生此错误,如果尚未知道文本(使用数据绑定绑定),则只能正常工作。
以下是导致错误的xaml代码:
AND PKRequestStatus IN (SELECT DISTINCT PKRequestStatus FROM @StatusTable)
这是WidthToFontSizeConverter类:
<Window.Resources>
<Style x:Key="FontSizeScale" TargetType="TextBlock">
<Setter Property="FontSize" Value="{Binding RelativeSource={RelativeSource Self}, Path=ActualWidth, Converter={x:Static localConverter:WidthToFontSizeConverter.Instance}}"></Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20*"/>
<ColumnDefinition Width="715*"/>
<ColumnDefinition Width="30*"/>
<ColumnDefinition Width="220*"/>
<ColumnDefinition Width="20*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="17*"/>
<RowDefinition Height="41*"/>
<RowDefinition Height="38*"/>
<RowDefinition Height="41*"/>
<RowDefinition Height="38*"/>
<RowDefinition Height="371*"/>
<RowDefinition Height="36*"/>
<RowDefinition Height="87*"/>
<RowDefinition Height="16*"/>
</Grid.RowDefinitions>
<TextBlock Style="{StaticResource FontSizeScale}" Text="Version: " FontWeight="Bold" Grid.Row="1" Grid.Column="1"/>
</Grid>
这是带有数据绑定的代码(没有错误,完美无瑕):
[ValueConversion(typeof(double), typeof(double))]
public class WidthToFontSizeConverter : IValueConverter
{
public static readonly WidthToFontSizeConverter Instance = new WidthToFontSizeConverter();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (double) value / 1.7;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
非常感谢任何帮助。