Выбор первого элемента в ListBox на CollectionViewSource.Filter - PullRequest
2 голосов
/ 08 марта 2011

Мой ListBox связан с источником CollectionView.Когда я меняю фильтр, он автоматически выбирает первый элемент в 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 ]

4 голосов
/ 01 июня 2011

Установите свой ListBox IsSynchronizedWithCurrentItem = "False".

0 голосов
/ 09 марта 2011

Что на самом деле вы хотите?

Если вы не хотите, чтобы первый элемент был выбран при смене фильтра, вы должны сначала создать частный объект Task (и / или свойство SelectedTask, реализующее INotifyPropertyChanged).

В событии SelectionChanged вашего списка установите SelectedTask с текущей выбранной задачей.

Затем, после применения фильтра, привяжите свойство SelectedItem к SelectedTask.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...