Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 7 全景页面中的延迟加载列表框_Windows Phone 7_Listbox_Lazy Loading - Fatal编程技术网

Windows phone 7 全景页面中的延迟加载列表框

Windows phone 7 全景页面中的延迟加载列表框,windows-phone-7,listbox,lazy-loading,Windows Phone 7,Listbox,Lazy Loading,我想在我的一个WindowsPhone7应用程序的全景页面中添加一个延迟加载列表框(滑动时加载内容)。不过,我可以使用透视页面来完成。我提到 但这不适用于全景页面。有人能帮我吗 你看过Telerik Rad控制器了吗?它们具有所有类型的拉刷新控件。我在最近发布的一个名为“Rad Libs”的应用程序中使用了它们。你可以在这里看到控件,也可以下载一个演示所有控件的应用程序。(免责声明:我与telerik没有任何关系。在这里推广它们不会有任何好处)好的,您需要做两件事之一:使用BCL异步包(基本上是

我想在我的一个WindowsPhone7应用程序的全景页面中添加一个延迟加载列表框(滑动时加载内容)。不过,我可以使用透视页面来完成。我提到


但这不适用于全景页面。
有人能帮我吗

你看过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.