使用IValueConverter的货币转换器

时间:2015-01-17 09:06:50

标签: c# xaml windows-store-apps ivalueconverter

我正在使用XAML和C#在Windows 8.1 Store App上工作。

我添加了2个文本框并实现了IValueConverter接口。

这是Xaml代码

<Page.Resources>
    <local:ConverterClass x:Key="C_Converter" />
    <local:EuroConverterClass x:Key="Euro_Converter" />
    <local:YenConverterClass x:Key="Yen_Converter" />
</Page.Resources>

<TextBox Name="PKR_TextBox" 
             Grid.Row="1"
             Grid.Column="2"
             Width="450" 
             Height="50"  
             FontSize="30"
             FontWeight="Bold"
             HorizontalAlignment="Left" 
             VerticalAlignment="Center" />

<TextBox Name="DOLLAR_TextBox"
             Grid.Row="2"
             Grid.Column="2"
             Text="{Binding ElementName=PKR_TextBox, Path=Text, Converter={StaticResource C_Converter}}"
             Width="450" 
             Height="50"  
             FontSize="30"
             FontWeight="Bold"
             HorizontalAlignment="Left" 
             VerticalAlignment="Center" />

这是我的转换器类代码:

class ConverterClass : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        int pkr;
        int dollar = 0;
        if (Int32.TryParse(value.ToString(), out pkr))
        {
            dollar = pkr * 0.0099;
        }
        return dollar;          
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

我试图在运行时转换货币,当用户在PKR文本框中输入值时,它应该自动更新USD Textbox。但它却给了我一个错误&#34;无法隐式转换类型&#39; double&#39; to&#39; int&#39;。存在显式转换(您是否错过了演员?)&#34;。

请帮助,不理我的英语。

1 个答案:

答案 0 :(得分:0)

错误信息非常清楚。您必须使用double值进行计算。使用C#时,double是默认的浮点类型。

public object Convert(
    object value, Type targetType, object parameter, string language)
{
    double pkr;
    double dollar = 0.0;
    if (double.TryParse(value.ToString(), out pkr))
    {
        dollar = pkr * 0.0099;
    }
    return dollar; 
}