只是好奇我将如何在表单中定义以下内容。
C#
weather.Temperature = (string)results["main"]["temp"] ;
XAML
<Label x:Name="tempLabel"
Text="{Binding Temperature , StringFormat='{0}°'F}"/>
我目前的结果:270.50它应该是83 F.
有任何想法吗?谢谢
在转换°F < - >°C时,您可以使用格式字符串仅显示整数
<Label x:Name="tempLabel"
Text="{Binding Temperature , StringFormat='{0:F0}°F'}"/>
(请注意,我在引号内移动'F'以便正确显示)。 F0
格式字符串是一个小数为零的固定小数浮点格式化程序。 F1
将有一个十进制数字,F2
两个,依此类推。如果您想了解有关数字格式字符串的更多信息,请参阅here。
要将°C值转换为°F,您可以使用IValueConverter
(请参阅here),或直接在viewmodel中转换值。
编辑
我错过了Temperature
是string
的观点。为了使用数字格式,Temperature
必须是一个数字。按以下方式转换它
weather.Temperature = double.Parse((string)results["main"]["temp"])
(当然你必须将Temperature
属性的类型改为double?
);
首先,您需要手动转换温度,从摄氏温度转换为华氏温度,反之亦然,无论您想要什么(请通过网络查看,这是公式)。通过从十进制转换为整数,您可以使用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;
}
我发现服务让我定义单位,我需要做的就是添加&units = imperial作为服务调用的参数,它将以华氏温度返回温度。另外,我应用@Paul Kertscher编辑只显示整数。谢谢大家的答案。