参数值必须介于'0'和'35791.3940666667之间'

时间:2018-02-14 20:22:20

标签: c# wpf data-binding binding

我正在尝试根据它的宽度缩放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();
    }
}

非常感谢任何帮助。

0 个答案:

没有答案