【问题标题】:ImultiValueConverter error while converting from object to double从对象转换为双精度时出现 ImultiValueConverter 错误
【发布时间】:2014-08-14 17:34:46
【问题描述】:

我正在使用 ImultiValueConverter,我想将两个文本框中的两个双精度值转换为双精度值并将它们相乘并在第三个文本框中显示结果 这是.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>

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

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

【问题讨论】:

    标签: wpf multibinding imultivalueconverter


    【解决方案1】:

    类似于 转换器中的参数值无法解析为双精度(在加载时,传递给转换器的值将是空字符串,无法解析为双精度。因此错误)

    使用 TryParse 来查看 value 是否可以转换为 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 2015-11-24
      • 1970-01-01
      • 2015-02-12
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多