0

我在我的 WP7 应用程序中使用 longlistselector。在这个应用程序中,longlistselector 可以填充几个项目(超过 20 个),项目模板有点复杂。在这种情况下,当用户单击填充列表的按钮时,UI 会挂起 3.4 秒或更长时间,等待填充列表。我的想法是在填充列表时显示列表,我创建了一个 Timer 并且每个刻度都向列表中添加一个元素。从视觉上看,这个想法有效并且 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].Add(task1); tasksVisibili[2].Add(task2); tasksVisibili[2].Add(task3);

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

问候,塞尔吉奥

4

0 回答 0