添加longlistselector项而不阻止UI

时间:2011-11-05 12:05:51

标签: windows-phone-7 longlistselector

我在WP7应用中使用了longlistselector。 在这个应用程序中,longlistselector可以使用一些复杂的itemtemplate填充多个项目(超过20个)。在这种情况下,当用户单击填充列表的按钮时,UI会挂起3,4或更长时间,等待填充列表。 我的想法是在填充时显示列表,我创建一个Timer,每个tick我都会在列表中添加一个元素。视觉上这个想法是有效的,UI也不会挂起......遗憾的是,longlistselector会添加所有项目,但错误的组合。 经过一些测试后,我也没有在一个线程中复制问题。这是代码:

这是绑定到longlistselector ItemsSource的Group类:

public class TaskByProject : ObservableCollection<TaskInProjectGroup>
{


    public TaskByProject(List<Task> tasks)
    {
          // here groups are created and list is populated

    }
}

public class TaskInProjectGroup : ObservableCollection<Task>
{
    public TaskInProjectGroup(string category)
    {
        Key = category;
    }

    public string Key { get; set; }


    public bool HasItems { get { return Count > 0; } }
}

Thisi是我用来加载数据的代码:

    TaskByProject tasksVisibili;

    // create a taskyproject with the same groups of taskView 
    tasksVisibili = new TaskByProject(emptylist of tasks);


    lbToday.ItemsSource = tasksVisibili;

然后创建一个按钮,将项目添加到tasksVisibili:

    private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        tasksVisibili[0].Add(task1);
        tasksVisibili[1].Add(task2);
        tasksVisibili[2].Add(task3);
    }

单击按钮后,结果是3任务全部添加到第三组,更具体的结果与执行此代码的结果相同:             tasksVisibili [2]。新增(任务1);             tasksVisibili [2]。新增(TASK2);             tasksVisibili [2]。新增(TASK3);

我做错了?还有另一种方法来实现我的目标吗?或者是一个错误?

此致 塞尔吉奥

0 个答案:

没有答案