我的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));
}
请帮助我。
答案 0 :(得分:4)
设置ListBox IsSynchronizedWithCurrentItem =“False”。
答案 1 :(得分:0)
你真的想要什么?
我不希望在更改过滤器时选择第一个项目,首先要创建一个私有Task对象(和/或一个实现INotifyPropertyChanged的SelectedTask属性)。
在列表框的SelectionChanged事件中,使用当前选定的任务设置SelectedTask。
然后,在应用过滤器之后,将SelectedItem属性绑定到SelectedTask。