使用xamarin表格将温度从十进制转换为整数

问题描述 投票:-3回答:3

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

C#

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

XAML

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

我目前的结果:270.50它应该是83 F.

有任何想法吗?谢谢

xaml xamarin.forms converter weather temperature
3个回答
1
投票

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

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

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

要将°C值转换为°F,您可以使用IValueConverter(请参阅here),或直接在viewmodel中转换值。

编辑

我错过了Temperaturestring的观点。为了使用数字格式,Temperature必须是一个数字。按以下方式转换它

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

(当然你必须将Temperature属性的类型改为double?);


1
投票

首先,您需要手动转换温度,从摄氏温度转换为华氏温度,反之亦然,无论您想要什么(请通过网络查看,这是公式)。通过从十进制转换为整数,您可以使用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;        
}

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.