有没有更好的方法可以在Xamarin Forms上使用XAML绑定到JObject?

时间:2019-05-17 16:41:58

标签: xaml xamarin mvvm xamarin.forms

我正在从Node API中提取JSON。我希望能够仅使用JObject而不是预定义的类型来解析响应。这将使我在要做的事情上更具灵活性。

以下是数据的外观示例。

<Label HorizontalTextAlignment="Center"
       Text="{Binding Path=[section][body]}"
       x:Name="Body">
</Label>

这里是我尝试过的XAML的示例。这什么也没显示。绑定的标签为空白,但不会引发错误。 范例1:

<Label HorizontalTextAlignment="Center"
       BindingContext="{Binding Path=[section]}"
       Text="{Binding Path=[body]}"
       x:Name="Body">
</Label>

这里是具有相同数据的有效绑定。尽管从技术上讲这是可行的,但我期望对象的深度超过几个层次。我可能只为父控件设置BindingContext,但这似乎会变得混乱。 示例2:

{{1}}

1 个答案:

答案 0 :(得分:0)

最后,我发现我们必须在每个属性之间添加一个简单的点才能使其正常工作。

即字符串是:

string jsonStr = @"{
                        section: 
                        { 
                        title: 
                        {
                            subtitle: ""subtitle""
                        },
                        body: ""This is your body!""
                        },

                    }";
var jsonObject = JsonConvert.DeserializeObject(jsonStr);
BindingContext = jsonObject;

xaml绑定代码为:

<Label HorizontalTextAlignment="Center" Text="{Binding Path=[section].[title].[subtitle]}" />

标签显示正确的字符串“字幕”。