Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
C# Windows phone 7将项目异步添加到stackpanel_C#_Windows Phone 7_Asynchronous_Stackpanel - Fatal编程技术网

C# Windows phone 7将项目异步添加到stackpanel

C# Windows phone 7将项目异步添加到stackpanel,c#,windows-phone-7,asynchronous,stackpanel,C#,Windows Phone 7,Asynchronous,Stackpanel,我想知道是否可以将子元素异步添加到stackpanel(或任何其他元素)。似乎所有项目都是一次呈现的 我是否使用后台工作程序或调度程序并不重要。结果总是一样的-当所有项目都被添加后,它们就会显示出来 我想要的是这样的: Deployment.Current.Dispatcher.BeginInvoke(() => { foreach (var item in items.Skip(x).Take(pageSize)) { // when this row i

我想知道是否可以将子元素异步添加到stackpanel(或任何其他元素)。似乎所有项目都是一次呈现的

我是否使用后台工作程序或调度程序并不重要。结果总是一样的-当所有项目都被添加后,它们就会显示出来

我想要的是这样的:

Deployment.Current.Dispatcher.BeginInvoke(() => {
    foreach (var item in items.Skip(x).Take(pageSize))
    {
        // when this row is executed new item should be visible
        ItemsList.Children.Add(new _ListItem(item));
    }
});
问候 max

您应该使用该类来存储要显示的项目。该类实现了接口,该接口允许它在添加和删除项时更新UI

以下是有关和的更多详细信息(请参见此)

此外,您可能需要使用添加/删除项目。

您应该使用类来存储要显示的项目。该类实现了接口,该接口允许它在添加和删除项时更新UI

以下是有关和的更多详细信息(请参见此)


此外,您可能需要使用添加/删除项。

此代码段每隔500毫秒向stackPanel添加一个新的文本块,而不会冻结UI。项目添加后立即在UI中可见:

ThreadPool.QueueUserWorkItem(_ => {
                foreach (int item in Enumerable.Range(1,50)) {
                  Thread.Sleep(500);//simulate some calculations here
                  int item1 = item;
                  Deployment.Current.Dispatcher.BeginInvoke(() => {
                      stackPanel.Children.Add(new TextBlock(){Text = "Text "+item1});
                  });
                }
            });

此代码段每500毫秒向stackPanel添加一个新的TextBlock,而不冻结UI。项目添加后立即在UI中可见:

ThreadPool.QueueUserWorkItem(_ => {
                foreach (int item in Enumerable.Range(1,50)) {
                  Thread.Sleep(500);//simulate some calculations here
                  int item1 = item;
                  Deployment.Current.Dispatcher.BeginInvoke(() => {
                      stackPanel.Children.Add(new TextBlock(){Text = "Text "+item1});
                  });
                }
            });