longlistselector上下文菜单NavigationService错误的项目

时间:2014-03-03 10:16:11

标签: windows-phone-8 caliburn.micro

我有一个longlistselector并使用contextmenu。使用NavigationService时遇到问题。

对于每个列表项,都有一个上下文菜单,用于删除或编辑项目,对于预先存在的项目列表,它似乎正常工作。
但是,如果我添加一个新人,向该人添加一个新项目,编辑它,然后添加另一个项目,当我尝试编辑第二个项目时,会选择第一个项目。

是一个BUG?

我的Xaml代码如下所示:

<DataTemplate x:Key="LongListSelectorItemTemplate">
        <StackPanel Orientation="Horizontal" Margin="4,4">
            <toolkit:ContextMenuService.ContextMenu>
                <toolkit:ContextMenu cal:Action.TargetWithoutContext="{Binding DataContext, ElementName=LayoutRoot}">
                    <toolkit:MenuItem Header="Edit" cal:Message.Attach="[Event Tap] = [Action ContextMenuEdit_EventTap($datacontext)]" />
                    <toolkit:MenuItem Header="Delete" cal:Message.Attach="[Event Tap] = [Action ContextMenuDelete_EventTap($datacontext)]" />
                </toolkit:ContextMenu>
            </toolkit:ContextMenuService.ContextMenu>
            <TextBlock Text="{Binding Name}"  />
            <TextBlock Text="{Binding Name2}" />
        </StackPanel>
    </DataTemplate>

1 个答案:

答案 0 :(得分:2)

我不确定这是否是您问题的解决方案,但我遇到了同样的问题而且对我有用。

为phoneApplicationPage(xaml顶部)添加名称

<phone:PhoneApplicationPage
......
Your settings
......
x:Name="Page">

并更改此代码:

<toolkit:ContextMenu cal:Action.TargetWithoutContext="{Binding DataContext, ElementName=LayoutRoot}">

进入这个:

<toolkit:ContextMenu cal:Action.TargetWithoutContext="{Binding ElementName=Page, Path=DataContext}">