0
我想在Visual Studio Express 2012 RC中創建一個應用程序。我下載了一些JSON數據並將其反序列化。但將數據綁定到列表框後,不是顯示實際內容,而是在文本塊中顯示project-name.page-name+Datum
。使用json數據在windows 8 metro風格的應用程序中的數據綁定(c#)
這裏是XAML代碼的一部分:
<ListBox x:Name="listbox1" HorizontalAlignment="Left" Height="687" Margin="10,71,0,0" VerticalAlignment="Top" Width="1346" ItemsSource="{Binding data}">
<TextBlock x:Name="textblock1" TextWrapping="Wrap" Height="50" Width="443" Text="{Binding name}" />
</ListBox>
這裏是xaml.cs代碼部分
public class RootObject
{
public List<Datum> data { get; set; }
}
public class Datum
{
public string name { get; set; }
}
這是我使用到的代碼反序列化JSON數據
stream loading = await load.GetStreamAsync(....);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(RootObject));
RootObject loaded = (RootObject) ser.ReadObject(loading);
listbox1.DataContext = loaded;
有誰能告訴我我的代碼有什麼問題嗎?我在Windows Phone應用程序中使用了相同的功能,並且它工作正常,只是我在其中使用了webclient。
請幫忙。
感謝和旁註說,我只是測試我的應用程序,一旦它的工作,我會重新設計它......我不太瞭解xaml你能告訴我爲什麼它不會使用我的方法?我的意思是我只是添加一個列表框,然後從控件的文本塊,所以一切都是自動的?....我現在要嘗試你的方法 – prolific 2012-07-09 16:43:49
@ user1489610當你在列表框中添加一個TextBlock時,它認爲你想添加它到項目集合,但是你已經設置了一個ItemsSource,所以這兩個將會發生衝突。你看到的主要問題是它*顯示項目,但它顯示項目類型,因爲你沒有設置ItemTemplate。如果你定義了一個像我向你展示的那樣,它將顯示該項目作爲你定義的任何東西。你甚至可以用多個TextBlocks,Images,矩形設置一個複雜的面板 - 無論你喜歡什麼。 – erodewald 2012-07-09 16:47:02
是的你的方法工作得很好......但我仍然想知道爲什麼我的方法不工作,我怎麼知道我必須在代碼中添加項目模板和數據模板.....我是學習者並試圖瞭解事情是如何工作的以及我如何能夠自己達成解決方案......所以,任何幫助都可以正常工作......再次感謝 – prolific 2012-07-09 16:47:53