2011-03-08 81 views
2

我的列表框與CollectionView Source綁定。當我更改過濾器時,它將自動選擇Listox中的第一個項目。在CollectionViewSource.Filter上的列表框中選擇第一個項目

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

你真的想要什麼?

我不想在更改過濾器時選擇第一個項目,您首先要創建一個私有Task對象(和/或一個實現INotifyPropertyChanged的SelectedTask屬性)。

在列表框的SelectionChanged事件中,將SelectedTask設置爲當前選定的任務。

然後,應用您的過濾器後,將SelectedItem屬性綁定到SelectedTask。

4

設置您的ListBox IsSynchronizedWithCurrentItem =「False」。

相關問題