2013-11-23 6 views
1

У меня есть LongListSelector подобноеКак обновить LongListSelector после удаления элемента

<phone:LongListSelector Name="ListRecentFiles" 
             LayoutMode="Grid" 
             ItemsSource="{Binding}" 
             GridCellSize="140,140" 
             SelectionChanged="ListRecentFiles_SelectionChanged"> 

         <phone:LongListSelector.ItemTemplate> 
          <DataTemplate> 
           <Grid Background="Red" Margin="0,0,5,5"> 
            <TextBlock Text="{Binding NoteTitle}" Style="{Binding PhoneTextNormalStyle}" /> 
            <toolkit:ContextMenuService.ContextMenu> 
             <toolkit:ContextMenu x:Name="ContextMenu"> 
              <toolkit:MenuItem x:Name="Delete" Header="Delete" Click="DeleteNote_Click" /> 
             </toolkit:ContextMenu> 
            </toolkit:ContextMenuService.ContextMenu> 
           </Grid> 
          </DataTemplate> 
         </phone:LongListSelector.ItemTemplate> 
        </phone:LongListSelector> 

это DataContext: public static ObservableCollection<Note> NoteItems;

И я пытаюсь удалить элемент из LongListSelector

private void DeleteNote_Click(object sender, RoutedEventArgs e) 
{ 
    Note selectedNote = (sender as MenuItem).DataContext as Note; 
    ListRecentFiles.ItemsSource.Remove(item); 
    NoteItems.Remove(selectedNote); 
} 

Это не работает, кроме как перейти на другую страницу XAML и вернуть

Я посетил эту страницу, но не могу исправить link

ответ

4

Не видя больше кода, трудно быть уверенным, что происходит не так. Но если вы устанавливаете

ListRecentFiles.DataContext = NoteItems; 

это неверно. Вы хотите установить

ListRecentFiles.ItemsSource = NoteItems; 

В XAML декларации:

ItemSource="{Binding}" 

могли бы сделать это (в зависимости от остальной части кода). После того, как .ItemsSource установлен правильно, то строка:

NoteItems.Remove(selectedNote); 

Если удастся извлекать визуальный элемент из LongListSelector. В любом случае, вы не должны делать строку:

ListRecentFiles.ItemsSource.Remove(item); 

Это будет делать неправильные вещи, когда список становится настолько большой, что не помещается в памяти сразу.

+0

Я правильно установил 'DataContent = NoteItems;' и LongListSelector. Я нашел способ удалить элемент без текущей текущей страницы xaml – HelloWindowsPhone

+0

спасибо, я решил. Просто установите «ListRecentFiles.ItemSource = NoteItems;» – HelloWindowsPhone

Смежные вопросы