Я использую longlistselector в своем приложении WP7.В этом приложении longlistselector может быть заполнен несколькими элементами (более 20) с немного сложным шаблоном item.В том случае, когда пользователь нажимает кнопку, которая заполняет список, пользовательский интерфейс зависает в течение 3,4 или более секунд, ожидая заполнения списка.Моя идея состояла в том, чтобы показать список во время его заполнения, я создаю таймер и каждый тик я добавляю элемент в список.Визуально идея работает, а пользовательский интерфейс не зависает ... к сожалению, longlistselector добавляет все элементы, но в неправильные группы.После некоторых тестов я повторяю проблему также не в потоке.Вот код:
Вот класс Group, связанный с longlistselector ItemsSource:
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; } }
}
Это код, который я использую для загрузки данных:
TaskByProject tasksVisibili;
// create a taskyproject with the same groups of taskView
tasksVisibili = new TaskByProject(emptylist of tasks);
lbToday.ItemsSource = tasksVisibili;
Затем создайте кнопку, чтобы добавить элементы к задачам. Visibili:
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] .Добавить (task3);
Я делаю это неправильно?есть другой способ достичь моей цели?или это ошибка?
С уважением, Серхио