我有像这样的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
答案 0 :(得分:4)
如果没有看到更多代码,很难确定出现了什么问题。但是如果你正在设置
ListRecentFiles.DataContext = NoteItems;
这是不正确的。你想设置
ListRecentFiles.ItemsSource = NoteItems;
XAML声明:
ItemSource="{Binding}"
可以这样做(取决于代码的其余部分)。一旦.ItemsSource设置正确,那么行:
NoteItems.Remove(selectedNote);
应该成功从LongListSelector中删除可视项目。无论如何,你不应该这样做:
ListRecentFiles.ItemsSource.Remove(item);
当列表变得如此之大以至于它不能同时存储在内存中时,这会做错事。