【问题标题】:Currency Converter using IValueConverter使用 IValueConverter 的货币转换器
【发布时间】:2015-01-17 09:06:50
【问题描述】:

我正在使用 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 文本框。但相反,它给了我一个错误“无法将类型'double'隐式转换为'int'。存在显式转换(您是否缺少演员表?)”。

请帮助并忽略我糟糕的英语。

【问题讨论】:

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


    【解决方案1】:

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

    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; 
    }
    

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多