相关疑难解决方法(0)

ContextMenu的MenuItem DataContext返回旧项

我在LongListSelector中使用ContextMenu,以便我可以删除绑定到LLS的列表中的一些项目.

我在这里遵循最近的指南以实现LLS(虽然我没有使用JumpList).我唯一改变的是让基组类扩展ObservableCollection而不是List.

我遇到的问题是,一旦我实现了ContextMenu并从那里删除,我可以从可见列表中的相同"位置"删除两次然后它会崩溃.调试显示在第二次删除后,MenuItem的Datacontext返回已删除的上一个项目.所以当我在列表中搜索它时,我得到的索引是-1.我可以抓住这个,但我不知道如何找出真正被选为项目的东西.

contextMenu的我的XAML部分如下:

<phone:LongListSelector.ItemTemplate>
    <DataTemplate>
        <Grid toolkit:TiltEffect.IsTiltEnabled="True">
            <toolkit:ContextMenuService.ContextMenu>
                <toolkit:ContextMenu  x:Name="conmen" Loaded="ContextMenu_Loaded">
                      <toolkit:MenuItem Header="Delete" Click="DeleteItem_Click"/>
                </toolkit:ContextMenu>
            </toolkit:ContextMenuService.ContextMenu>

             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="Auto"/>
                 <ColumnDefinition Width="*"/>
                 <ColumnDefinition Width="Auto"/>
             </Grid.ColumnDefinitions>

             <Border Grid.Column="0" Background="{StaticResource PhoneInverseBackgroundBrush}" Padding="{StaticResource PhoneTouchTargetOverhang}">
                 <TextBlock Text="{Binding Usr, StringFormat='x{0}'}" FontSize="32" HorizontalAlignment="Left" Width="48"/>
             </Border>

             <Border Grid.Column="1" Background="{StaticResource PhoneInverseBackgroundBrush}" Padding="{StaticResource PhoneTouchTargetOverhang}">
                 <TextBlock Text="{Binding Name}" FontSize="32" HorizontalAlignment="Left" />
             </Border>

             <Border Grid.Column="2" Background="{StaticResource PhoneInverseBackgroundBrush}" Padding="{StaticResource PhoneTouchTargetOverhang}">
                <TextBlock Text="{Binding Type, StringFormat=\{0:C\}}" FontSize="32" HorizontalAlignment="Right" />
             </Border>
        </Grid>
    </DataTemplate>
</phone:LongListSelector.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

这是删除项目的delete_click函数的开始:

    private void DeleteItem_Click(object sender, RoutedEventArgs e)
    {            
        var …
Run Code Online (Sandbox Code Playgroud)

wpftoolkit windows-phone-8

7
推荐指数
1
解决办法
2374
查看次数

标签 统计

windows-phone-8 ×1

wpftoolkit ×1