Windows phone 7 在CollectionViewSource.Filter上选择列表框中的第一项

Windows phone 7 在CollectionViewSource.Filter上选择列表框中的第一项,windows-phone-7,Windows Phone 7,我的列表框与CollectionView源绑定。当我更改过滤器时,它会自动选择列表框中的第一项 App.ViewModel.TasksViewSource.Filter += new System.Windows.Data.FilterEventHandler(Tasks_Filter); void Tasks_Filter(object sender, System.Windows.Data.FilterEventArgs e) { if (e.Item == null)

我的列表框与CollectionView源绑定。当我更改过滤器时,它会自动选择列表框中的第一项

App.ViewModel.TasksViewSource.Filter += new System.Windows.Data.FilterEventHandler(Tasks_Filter);

void Tasks_Filter(object sender, System.Windows.Data.FilterEventArgs e)
{
    if (e.Item == null)
        return;
    Task task = e.Item as Task;
    e.Accepted = task.Id.Equals(TaskId);
}

private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (TasksListBox.SelectedIndex == -1)
        return;
    Task selectedTask = App.ViewModel.AllTasks[TasksListBox.SelectedIndex];
    TasksListBox.SelectedIndex = -1;
    NavigationService.Navigate(new Uri("/Views/TaskDetailsPage.xaml?taskId=" + selectedTask.Id, UriKind.Relative));
}

请帮帮我。

你到底想要什么

如果不希望在更改筛选器时选择第一项,则必须首先创建一个私有任务对象(和/或实现INotifyPropertyChanged的SelectedTask属性)

在列表框的SelectionChanged事件中,使用当前选定的任务设置SelectedTask


然后,在应用过滤器后,将SelectedItem属性绑定到SelectedTask。

将列表框设置为SynchronizedWithCurrentItem=“False”