2013-09-23 137 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:優秀,很高興聽到它。 –