我在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);
我做错了?还有另一种方法来实现我的目标吗?或者是一个错误?
此致 塞尔吉奥