在CollectionViewSource.Filter上的ListBox中选择First Item

时间:2011-03-08 07:35:24

标签: windows-phone-7

我的ListBox与CollectionView Source绑定。当我更改过滤器时,它会自动选择Listox中的第一个项目。

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));
}

请帮助我。

2 个答案:

答案 0 :(得分:4)

设置ListBox IsSynchronizedWithCurrentItem =“False”。

答案 1 :(得分:0)

你真的想要什么?

我不希望在更改过滤器时选择第一个项目,首先要创建一个私有Task对象(和/或一个实现INotifyPropertyChanged的SelectedTask属性)。

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

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