2013-09-23 5 views
0

Я оконный телефон 8 новичков, борющихся в данный момент с привязкой данных с помощью xaml с массивами.windows phone 8 привязка данных к массиву

XAML:

<phone:LongListSelector x:Name="LocationsData" Margin="0,0,-12,0" ItemsSource="{Binding}"> 
    <phone:LongListSelector.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Margin="0,0,0,17"> 
       <TextBlock Text="{Binding name}" TextWrapping="NoWrap" Margin="12,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
       <TextBlock Text="{Binding vicinity}" TextWrapping="NoWrap" Margin="12,-6,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
      </StackPanel> 
     </DataTemplate> 
    </phone:LongListSelector.ItemTemplate> 
</phone:LongListSelector> 

.cs

LocationsData.DataContext = _array_of_locations; 

_array_of_locations имеет 4 пунктов,

enter image description here

каждый из них является допустимым JSON,

{ 
    "geometry": { 
     "location": { 
      "lat": 12.923101, 
      "lng": 77.586057 
     } 
    }, 
    "icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png", 
    "id": "9a769bc2faaa79fe0ffbd85c2c28446940153331", 
    "name": "Domino's Pizza", 
    "opening_hours": { 
     "open_now": false 
    }, 
    "price_level": 1, 
    "rating": 2.9, 
    "reference": "CnRsAAAAsI0LvfwZ_RC8PEDsJS3TfKkRkTn7d_2_-vw8tu_SYBYCJk2CmKt6RyRJtO5mG0Weq-R0jSsmyQOWHjU45itlrH1cN89EqgIA9Vtmvcih1xi6ZwpNewqZ8mNCQWWLDJvcT3AQLHGnFcn4E9a30Gvs9xIQeKGVsrSOKLDx4vYCjixIKhoUOGeosCJIVFDmE3-3qIPcIM7PSCs", 
    "types": [ 
     "restaurant", 
     "food", 
     "establishment" 
    ], 
    "vicinity": "11th Main Road, Jayanagar, Bangalore" 
} 

Это не работает, я заблудился со всей документацией, поскольку я не происхожу из C# фоне. Итак, как мне заставить это работать?

ответ

2

Проблема не массивы здесь, это тот факт, что источник привязки данных (то есть name и vicinity в {Binding name} и {Binding vicinity}) должен быть property. Объекты в вашем массиве не имеют свойств с именами name и vicinity, поэтому ничего не отображается. Фактически, вы даже можете увидеть ошибки привязки в окне «Вывод» в Visual Studio, отметив, что он не смог найти name и vicinity.

Я подозреваю, что у вас есть четыре предмета в вашем LongListSelector, но поскольку ни один из них не имеет в них никакого текста, они имеют нулевой размер, и вы их не видите. Попробуйте добавить TextBlock с некоторым статическим текстом (например, <TextBlock Text="X"/>) на ваш StackPanel, чтобы увидеть, появятся ли четыре цифры X.

Если вам просто нужно показать JSON только для чтения, тогда необходимо будет десериализовать JSON до anonymous types. Затем будет создан анонимный тип для каждого объекта JSON с одним (.NET) свойством для каждого свойства объекта JSON. См. Например, this question. Однако при любой удаче, которая должна работать, я ее не тестировал.

+0

Прохладный, даст это и попытаться сохранить вас в курсе. Спасибо за ваше время на это, очень ценим :) –

+0

Спасибо тонну @ Luke, заработал ее: D –

+0

@badZoke: отлично, рад это слышать. –