【问题标题】:Binding expression path failure WP 8.1绑定表达式路径失败 WP 8.1
【发布时间】:2015-07-30 07:25:28
【问题描述】:

我正在尝试获取一个测试应用程序,该应用程序从在线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';目标元素是'Windows.UI.Xaml.Controls.TextBlock'(名称='null');目标属性是“文本”(类型“字符串”)

这里是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 和我需要使用的实际数据之间还有另一个对象。这是我遗漏的还是我的数据绑定语句不正确?

【问题讨论】:

    标签: c# json xaml windows-phone-8.1


    【解决方案1】:

    您的路径不正确,如错误消息所示。您正在尝试绑定到属性 field_class_day_value 但 DataTemplate 中的 DataContext 是 node (因为您的 ItemsSource 是节点列表)

    Text="{绑定 field_class_day_value}"

    应该是

    Text="{绑定节点.field_class_day_value}"

    顺便问一下:你为什么把你的 node2 作为一个属性包装在 node 中?

    【讨论】:

    • 非常感谢!我被困了一段时间,这很简单。遗憾的是,它被包装的原因是因为 json 文件是很久以前这样创建的,并且对其结构进行更改需要很长时间。
    猜你喜欢
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2016-02-21
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多