ListBox更新来自远程的项目

时间:2016-12-30 21:33:25

标签: uwp

我很难理解如何在C#UWP中处理ListBox es。当我试图从互联网上的某个地方获取物品时,它失败了。我试着阅读ObservableCollection s并且说实话并不完全理解,我的测试仍然失败。

为什么ListBox无法更新并显示内容 - 当我运行调试器时它就在那里。

1 个答案:

答案 0 :(得分:0)

我制作了一个示例应用程序,显示了数据绑定周围的所有选项。您可以在此处下载:https://1drv.ms/u/s!ApdKhb5zPLrRypBoZbHqguGIMqCz2A

亮点:

第1部分加载数据

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    await Task.Delay(TimeSpan.FromSeconds(2)); // Fake waiting on result from a webservice / website;

    Items = new ObservableCollection<Item>
    {
        new Item { Title = "Item 1" },
        new Item { Title = "Item 2" },
    };
    Bindings.Update();


    await Task.Delay(TimeSpan.FromSeconds(3));

    Items[1].Title = "Updated item via PropertyChanged";
}

在onnavigatedto我伪造我正在从webservice加载数据(使用2秒的延迟)。然后在延迟之后,我将使用observablecollection指定我的Items属性。现在,这个Items属性需要接口INotifyPropertyChanged实现,或者你需要调用Bindings.Update()。为此我选了最后一个。我还创建了一个实现INotifyPropertyChanged的Item类。为了证明这一点,我在最后3秒后更改了第二项的属性Title。在UI中,您将看到自动更新