2013-11-23 67 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

相关问题