2016-12-30 69 views
0

我在理解如何处理C#UWP中的ListBox es时遇到问题。当我尝试从互联网上的某个地方获取项目时,它会失败。我尝试阅读ObservableCollection s,说实话并没有完全理解,我的测试仍然失败。ListBox更新来自远程的项目

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

+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我假装说我从web服务加载数据(通过使用2秒延时)。然后,在延迟后,我将一个可观察集合分配给我的Items属性。现在这个Items属性需要实现接口INotifyPropertyChanged,否则你需要调用Bindings.Update()。为此,我选择了最后一个。我也创建了一个实现INotifyPropertyChanged的Item类。为了证明这一点,我在最后3秒钟后更改了第二项的属性标题。在用户界面你会看到这个自动获取更新