使用 xamarin 表单将温度从小数转换为整数

convert temperature from decimal to whole using xamarin forms

只是好奇我将如何在表单中定义以下内容。

c#

 weather.Temperature = (string)results["main"]["temp"]  ;

xaml

<Label x:Name="tempLabel"
            Text="{Binding Temperature , StringFormat='{0}°'F}"/> 

我目前的成绩:270.50 应该是 83 F

有什么想法吗?谢谢

首先,您需要手动转换温度,从摄氏度到华氏度,反之亦然(请在网上查看这个,公式是什么)。通过从小数转换为整数,可以使用 Math.Round(yourNumber, 0);。然后将结果绑定到你的 XAML.

编辑:您也可以使用转换器{Binding value, Converter={StaticResource YourConverter}来完成此操作,这样代码就可以重用

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    var item = value.ToString();
    item = //your fahrehnheit converter formula 
          //do necessary conversions string to double etc.
    return item;        
}

忽略转换 °F<->°C 您可以使用格式字符串仅显示整数

<Label x:Name="tempLabel"
    Text="{Binding Temperature , StringFormat='{0:F0}°F'}"/> 

(请注意,我将 'F' 移到了引号内以便正确显示)。 F0 格式字符串是固定小数位的浮点格式器,小数点为零。 F1 将有一位小数,F2 两位,依此类推。如果您想阅读有关数字格式字符串的更多信息,请参阅 here

要将 °C 值转换为 °F,您可以使用 IValueConverter(参见 here),或直接在视图模型中转换该值。

编辑

我没注意到 Temperaturestring。为了使用数字格式,Temperature 必须是一个数字。按以下方式转换它

weather.Temperature = double.Parse((string)results["main"]["temp"])

(当然你得把Temperature 属性的类型改成double?);

我发现服务让我定义单位,我需要做的就是添加 &units=英制 作为服务调用的参数,它将 return 华氏温度。 另外,我应用@Paul Kertscher edit 只显示整数。 谢谢大家的答案。