【发布时间】:2017-04-08 12:15:09
【问题描述】:
我尝试使用 openweathermap api(预测 5 天)。我已经将 json 生成为 C# 代码,如下所示:
[DataContract]
public class Main
{
[DataMember]
public double temp { get; set; }
[DataMember]
public double temp_min { get; set; }
[DataMember]
public double temp_max { get; set; }
[DataMember]
public double pressure { get; set; }
[DataMember]
public double sea_level { get; set; }
[DataMember]
public double grnd_level { get; set; }
[DataMember]
public int humidity { get; set; }
[DataMember]
public double temp_kf { get; set; }
}
[DataContract]
public class Weather
{
[DataMember]
public int id { get; set; }
[DataMember]
public string main { get; set; }
[DataMember]
public string description { get; set; }
[DataMember]
public string icon { get; set; }
}
[DataContract]
public class Clouds
{
[DataMember]
public int all { get; set; }
}
[DataContract]
public class Wind
{
[DataMember]
public double speed { get; set; }
[DataMember]
public double deg { get; set; }
}
[DataContract]
public class Sys2
{
[DataMember]
public string pod { get; set; }
}
/*public class Rain
{
public double __invalid_name__3h { get; set; }
}*/
[DataContract]
public class List
{
[DataMember]
public int dt { get; set; }
[DataMember]
public Main main { get; set; }
[DataMember]
public List<Weather> weather { get; set; }
[DataMember]
public Clouds clouds { get; set; }
[DataMember]
public Wind wind { get; set; }
[DataMember]
public Sys2 sys { get; set; }
[DataMember]
public string dt_txt { get; set; }
//public Rain rain { get; set; }
}
[DataContract]
public class RootObject
{
[DataMember]
public City city { get; set; }
[DataMember]
public string cod { get; set; }
[DataMember]
public double message { get; set; }
[DataMember]
public int cnt { get; set; }
[DataMember]
public List<List> list { get; set; }
}
然后,在我拥有包含所有预测数据的 RootObject 之后,我尝试将前十个温度的列表绑定到 ListView。
编辑:
public sealed partial class MainPage : Page
{
private List<double> TemperatureObjects;
private ObservableCollection<RootObject> WeatherObjects;
我的 XAML 看起来像这样:
<ListView Grid.Row="2" ItemsSource="{x:Bind WeatherObjects}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:RootObject">
<StackPanel Orientation="Vertical">
<TextBlock>
<Run Text="{x:Bind Temp}"/>
<Run Text="󠂺"/>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
你能帮我解决这个问题吗?谢谢
【问题讨论】:
-
请显示负责绑定和设置数据上下文的代码,说明您是否使用了公共属性和INotifyPropertyChanged。否则你的问题太宽泛了。
-
Binding 适用于公共属性,因此您需要将行更改为至少
public ObservableCollection<RootObject> WeatherObjects {get;set;};并且您的 MainPage 应该实现 INotifyPropertyChanges 并且您应该在设置属性后引发 RaisePropertyChanged 事件。 -
好的。谢谢,我会这样做的
标签: c# xaml data-binding uwp