Есть ли лучший способ связать JObject с XAML на формах Xamarin? - PullRequest
0 голосов
/ 17 мая 2019

Я вытягиваю JSON из Node API. Я хочу иметь возможность просто анализировать ответ с помощью 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>

1 Ответ

0 голосов
/ 13 июня 2019

Наконец, я считаю, что мы должны добавить простую точку между каждым свойством, чтобы оно работало.

т.е. строка:

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

На этикетке отображается правильная строка «субтитры».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...