我正在尝试在Visual Studio Express 2012 RC中制作应用程序。我下载了一些JSON数据并对其进行了反序列化。但是在将数据绑定到列表框之后,它不是显示实际内容,而是在文本块中显示project-name.page-name+Datum
。
以下是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手机应用程序中使用相同的东西,并且它工作正常,除了我在其中使用了webclient。
请帮忙。
答案 0 :(得分:0)
您已在ListBox的Items
集合中添加了UIElement。让项目显示你想要的东西的正确方法是应用ItemTemplate。您可以内联或引用资源。
<ListBox ItemsSource="{Binding data}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding name}" />
</DataTemplate>
</ListBox.ItemTemplate
</ListBox>
它应该适用于该设置,但我没有测试它。如果这样做,请记住将其标记为答案,以便其他人可以从您的询问中学习。
附注
我还建议您删除任何非必要属性的示例代码,以获取它的价值。并且避免使用硬编码的宽度/边距值 - 允许应用程序元素按比例调整大小。