是否有更好的方法在Xamarin表单上使用XAML绑定到JObject?

是否有更好的方法在Xamarin表单上使用XAML绑定到JObject?,xaml,xamarin,mvvm,xamarin.forms,Xaml,Xamarin,Mvvm,Xamarin.forms,我从一个节点API中提取JSON。我希望能够使用JObject而不是预定义类型解析响应。这将给我更多的灵活性,我想做什么 下面是一个数据的示例 { section: { title: "Login", body: "This is your body!" } } 下面是我尝试过的XAML的一个示例。这没有显示任何东西。带有绑定的标签为空,但不会引发错误。 例1: <Label HorizontalTextAlignment="Center" Text

我从一个节点API中提取JSON。我希望能够使用JObject而不是预定义类型解析响应。这将给我更多的灵活性,我想做什么

下面是一个数据的示例

{
  section: {
    title: "Login",
    body: "This is your body!"
  }
}
下面是我尝试过的XAML的一个示例。这没有显示任何东西。带有绑定的标签为空,但不会引发错误。 例1:

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

这是一个使用相同数据的工作绑定。虽然这在技术上是可行的,但我希望物体的深度超过两层。我可能只是为父控件设置BindingContext,但这似乎会变得很混乱。 例2:

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

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

i、 e.字符串为:

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]}" />


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

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

i、 e.字符串为:

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]}" />


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

如果您有一个复杂的json字符串,最好定义一个用于显示的模型类。这个普通的绑定对话适合于简单的结构。在这个项目中,我们试图创建一个动态屏幕。我希望将XAML传递给应用程序,并在屏幕上呈现它,而不必通过应用商店推送更新。我唯一没有想到的是如何绑定到JObject。该应用程序将有一些屏幕,就像一个基本的CMS一样工作。管理员可以更改这些特定屏幕上的内容。您好,这对您有用吗?如果您有一个复杂的json字符串,您最好定义一个模型类来显示。这个普通的绑定对话适合于简单的结构。在这个项目中,我们试图创建一个动态屏幕。我希望将XAML传递给应用程序,并在屏幕上呈现它,而不必通过应用商店推送更新。我唯一没有想到的是如何绑定到JObject。该应用程序将有一些屏幕,就像一个基本的CMS一样工作。管理员可以更改这些特定屏幕上的内容。嗨,这对你有用吗?