0

我正在尝试在 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。

请帮忙。

4

1 回答 1

0

您已将 UIElement 添加到 ListBox 的Items集合中。让项目显示您想要的内容的正确方法是应用 ItemTemplate。您可以内联或引用资源。

<ListBox ItemsSource="{Binding data}">
    <ListBox.ItemTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding name}" />
        </DataTemplate>
    </ListBox.ItemTemplate
</ListBox>

它应该适用于该设置,尽管我没有对其进行测试。如果这有效,请记住将其标记为答案,以便其他人可以从您的询问中学习。

旁注

我还建议您清除任何非必要属性的示例代码,以确保其价值。并避免硬编码的宽度/边距值——允许应用程序元素按比例调整自己的大小。

于 2012-07-09T16:27:22.817 回答