【问题标题】:Data binding in ListBox on Windows Phone 8Windows Phone 8 上 ListBox 中的数据绑定
【发布时间】:2014-03-16 09:02:15
【问题描述】:

我是 Windows Phone 8 的新手。我有一个来自服务器的数据列表,格式如下:

RootObject json = JsonConvert.DeserializeObject<RootObject>(await serverData);

  mylist.ItemsSource = json.friends;
public class Friend
{
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string place { get; set; }
    public string going { get; set; }
    public string thumbnail { get; set; }
}

    public class RootObject
    {
        public List<Friend> friends { get; set; }
    }

我想在 UI 中的 ListBox 中显示该数据:

  <ListBox x:Name="mylist" Margin="10,0,30,0" Height="486" Width="404" FontSize="20">
            <ListBox.ItemTemplate>
                <DataTemplate >
                    <StackPanel Margin="10,0,10,8">
                        <TextBlock Text="{Binding first_name }" TextWrapping="Wrap" FontSize="18" />
                        <TextBlock Text="{Binding last_name }" TextWrapping="Wrap" FontSize="18" />
                        <TextBlock Text="{Binding place }" TextWrapping="Wrap" FontSize="18" />
                        <TextBlock Text="{Binding going }" TextWrapping="Wrap" FontSize="18" />
                        <TextBlock Text="{Binding thumbnail }" TextWrapping="Wrap" FontSize="18" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

这是一个工作版本

【问题讨论】:

    标签: c# xaml windows-phone-8


    【解决方案1】:

    ListBox 上的ItemsSource 应该绑定到friends,如下所示:

    <ListBox ItemsSource="{Binding friends}"  Margin="10,0,30,0" Height="486" Width="404" FontSize="20">
        <ListBox.ItemTemplate>
            <DataTemplate >
                <StackPanel Margin="10,0,10,8">
                    <TextBlock Text="{Binding first_name }" TextWrapping="Wrap" FontSize="18" />
                    <TextBlock Text="{Binding first_name }" TextWrapping="Wrap" FontSize="24" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    

    如果您还没有这样做,您需要在下载数据后为页面设置 DataContext,如下所示(假设您在页面的代码隐藏文件中进行下载,例如 MainPage. xaml.cs):

    RootObject json = JsonConvert.DeserializeObject<RootObject>(await serverData);
    this.DataContext = json;
    

    【讨论】:

    • 当我添加到我的代码 x:Name="mylist" 和 mylist.ItemsSource = json.friends;不知道为什么,但它的工作原理
    • 你设置this.DataContext = json;了吗?
    • 您的代码运行良好,但我无法理解为什么您在类名是friend时使用friends
    • 您在包含所有项目的RootObject 类上指定变量的名称,即名为“朋友”的列表。看看这里有一个很好的介绍:msdn.microsoft.com/en-us/library/windowsphone/develop/…
    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2013-03-26
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多