我正在尝试获取一个测试应用,该应用从在线Json file
抓取数据,数据在deserialized
后绑定。
我为我设置的每个数据绑定收到以下错误:
错误:BindingExpression路径错误:'JSON_Test_2.MainPage + Node,JSON_Test_2,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'上找不到'field_class_day_value'属性。 BindingExpression:Path ='field_class_day_value'DataItem ='JSON_Test_2.MainPage + Node,JSON_Test_2,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'; target元素是'Windows.UI.Xaml.Controls.TextBlock'(Name ='null'); target属性是'Text'(类型'String')
以下是XAML code
<ListBox x:Name="scheduleList" Margin="10,0,30,0" Height="486" Width="404"
FontSize="20">
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel Margin="10,0,10,8">
<TextBlock Text="{Binding field_class_day_value }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_class_time_start_value }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_class_time_end_value }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_class_flex_header_value }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding title }" TextWrapping="Wrap"
FontSize="18" />
<TextBlock Text="{Binding field_class_footer_value }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_class_flex_footer_value }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_class_studio_nid_1 }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_class_instructor_nid }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_ages_value }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_class_header_value }"
TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding field_class_unique_price_value }"
TextWrapping="Wrap" FontSize="18" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
为与Json一起使用而创建的类:
public class Node2
{
public string field_class_day_value { get; set; }
public string field_class_time_start_value { get; set; }
public string field_class_time_end_value { get; set; }
public string field_class_flex_header_value { get; set; }
public string title { get; set; }
public string field_class_footer_value { get; set; }
public string field_class_flex_footer_value { get; set; }
public string field_class_studio_nid_1 { get; set; }
public string field_class_instructor_nid { get; set; }
public string field_ages_value { get; set; }
public string field_class_header_value { get; set; }
public string field_class_unique_price_value { get; set; }
}
public class Node
{
public Node2 node { get; set; }
}
public class RootObject
{
public List<Node> nodes { get; set; }
}
最后创建用于反序列化JSON文件的方法
async private void ReadDataFromWeb()
{
var client = new HttpClient(); // Add: using System.Net.Http;
var response = await client.GetAsync(new
Uri("url"));
string result = await response.Content.ReadAsStringAsync();
RootObject rootobject = JsonConvert.DeserializeObject<RootObject
(result);
scheduleList.ItemsSource = rootobject.nodes;
}
我认为我收到了数据绑定错误,因为rootobject
和我需要使用的实际数据之间还有另一个对象。这是我缺少的还是我的数据绑定语句不正确?
答案 0 :(得分:0)
您的路径不正确,如错误消息所示。您正尝试绑定到属性 field_class_day_value ,但DataTemplate中的DataContext是节点(因为您的ItemsSource是节点列表)
Text =“{Binding field_class_day_value }”
应该是
Text =“{Binding node .field_class_day_value}”
顺便说一句:为什么将node2包装为节点中的属性?