2013-09-23 109 views
0

我是一个Windows Phone 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

问题不是阵列这里,它是一个数据的源结合的事实(即,在{Binding name}{Binding vicinity}namevicinity)必须是property。数组中的对象没有名称为namevicinity的属性,因此没有显示任何内容。实际上,您甚至可能会在Visual Studio的“输出”窗口中看到绑定错误,并提及它无法找到namevicinity属性。

我怀疑你已经在你的LongListSelector了四个项目,但由于他们都没有在他们的任何文字,他们有大小为零,你看不出来。尝试在您的StackPanel中添加带有一些静态文本(例如<TextBlock Text="X"/>)的TextBlock以查看是否出现四个X

如果您只需要显示JSON只读,那么应该可以将JSON反序列化为anonymous types。然后将为每个JSON对象创建一个匿名类型,并为JSON对象中的每个属性使用一个(.NET)属性。例如参见this question。然而,如果运气好的话,我还没有测试过。

+0

酷,会给这个,并尝试并保持张贴。感谢您在此的时间,非常感谢:) –

+0

感谢吨@Luke,得到它的工作:D –

+0

@badZoke:优秀,很高兴听到它。 –