Windows phone 7 全景页面中的延迟加载列表框
我想在我的一个WindowsPhone7应用程序的全景页面中添加一个延迟加载列表框(滑动时加载内容)。不过,我可以使用透视页面来完成。我提到Windows phone 7 全景页面中的延迟加载列表框,windows-phone-7,listbox,lazy-loading,Windows Phone 7,Listbox,Lazy Loading,我想在我的一个WindowsPhone7应用程序的全景页面中添加一个延迟加载列表框(滑动时加载内容)。不过,我可以使用透视页面来完成。我提到 但这不适用于全景页面。有人能帮我吗 你看过Telerik Rad控制器了吗?它们具有所有类型的拉刷新控件。我在最近发布的一个名为“Rad Libs”的应用程序中使用了它们。你可以在这里看到控件,也可以下载一个演示所有控件的应用程序。(免责声明:我与telerik没有任何关系。在这里推广它们不会有任何好处)好的,您需要做两件事之一:使用BCL异步包(基本上是
但这不适用于全景页面。
有人能帮我吗 你看过Telerik Rad控制器了吗?它们具有所有类型的拉刷新控件。我在最近发布的一个名为“Rad Libs”的应用程序中使用了它们。你可以在这里看到控件,也可以下载一个演示所有控件的应用程序。(免责声明:我与telerik没有任何关系。在这里推广它们不会有任何好处)好的,您需要做两件事之一:使用BCL异步包(基本上是向WP7添加异步任务等)或使用后台工作程序。我强烈推荐BCL异步包,它很容易在Nuget上使用 现在,在您的ViewModel中(您正在使用MVVM,是吗?)它绑定到的属性,我们称之为
Items
应该返回您需要的项类型的observeCollection
。现在,这里是魔术发生的地方。在该属性的Get
ter中,返回一个新集合并使用任务填充它。大概是这样的:
public ObservableCollection<object> Items
{
get
{
ObservableCollection<object> retCollection = new ObservableCollection<object>();
FillCollection(retCollection);
return retCollection;
}
}
public async void FillCollection(ObservableCollection<object> collectionToFill)
{
Task.Factory.StartNew(() =>
{
foreach(object objectToAdd in collectionImGettingThisDataFrom)
{
// We do this using the Dispatcher to
// be sure to pop back into the UI thread.
Deployment.Current.Dispatcher.BeginInvoke(
() => collectionToFill.Add(objectToAdd));
}
}
}
在foreach
块的末尾,但不在Dispatcher
调用中
快乐编码 谢谢你的回答。我听说过。但我更喜欢另一种方式。我建议至少下载试用版,它是免费的。您可以下载它并打开源代码。你可以看看他们是怎么做的,然后可能会复制。这听起来可能会遇到一些版权问题。“我可能会避免这样做。”NateDiamond首先,这将是对知识产权的盗窃。第二,如果您查看代码,然后编写自己的代码,这不是IP盗窃。第三,这就是他们发布代码的原因。所以你可以看看它是如何工作的,然后模仿它,或者让它变得更好。真的吗?我想他们会发布它,这样人们就可以在购买前进行安全性和性能评估。100-1500美元(100美元仅用于WP)对于一些开发人员来说,甚至是安全意识强的开发人员来说,都不是什么好笑的事情。
await TaskEx.Delay(25); // Some time in milliseconds. Too much and it will
// take a long time to load the list,
// too little and it will still bog down your UI.