从对象转换为double时出现ImultiValueConverter错误

时间:2014-08-14 17:34:47

标签: wpf multibinding imultivalueconverter

我正在使用ImultiValueConverter,我想将两个文本框中的两个double值转换为double并将它们相乘并在第三个文本框中显示结果 这是.cs文件中的代码

public  class NE_charp_converter:IMultiValueConverter
{
     public object Convert(object[] values, 
                           Type targetType,
                           object parameter,
                           System.Globalization.CultureInfo culture)
     {
         double RE_sharp = double.Parse ((string)values[0]) +
                           double.Parse((string)values[1]) ;
         return RE_sharp.ToString();
     }

     public object[] ConvertBack(object value, Type[] targetTypes, 
                                 object parameter, 
                                 System.Globalization.CultureInfo culture)
     {
         return null;
     }
}

这是xaml代码:

<TextBox x:Name="NE_charp_txt" Height="77" Margin="0,151,37,0" 
         VerticalAlignment="Top" HorizontalAlignment="Right" 
         Width="51.615" BorderBrush="Black">
    <TextBox.Text>
        <MultiBinding Converter="{StaticResource NE_CONVERTER}" Mode="OneWay">
            <Binding ElementName="WBC_txt" Path="Text"/>
            <Binding ElementName="NE_percent_txt" Path="Text"/>
        </MultiBinding>
    </TextBox.Text>
</TextBox>

但是我收到了这条消息: 确保您的方法参数格式正确

将对象转换为double并返回此值的正确形式是什么?!!

1 个答案:

答案 0 :(得分:2)

大多数情况下,转换器中的 参数值无法解析为双重 (在加载时,传递给转换器的值将是空字符串,无法解析为double。因此错误)

使用 TryParse 查看是否可以将值转换为double。如果没有返回空字符串,则返回两个double值的总和。

public object Convert(object[] values, Type targetType, object parameter, 
                      System.Globalization.CultureInfo culture)
{
    double firstValue = 0.0;
    double secondValue = 0.0;

    if (double.TryParse(values[0].ToString(), out firstValue) && 
        double.TryParse(values[1].ToString(), out secondValue))
    {
        double RE_sharp = firstValue + secondValue;
        return RE_sharp.ToString();
    }
    return String.Empty;
}