listview的上下文菜单不会触发RightTapped事件

时间:2015-06-16 00:24:54

标签: c# windows-phone-8.1 windows-8.1 win-universal-app

我一直在用c#工作一段时间但令人惊讶的是我以前从未处理过上下文菜单。我的通用Windows 8.1应用程序中有一个listView控件。现在我正在尝试为listView中的每个项目弹出一个上下文菜单(它们都是相同类型的对象,并在用户添加条目时添加到列表中)。我遇到了几个问题并查看了代码示例,它们似乎在不同方向上处于领先地位。首先,当我右键单击列表中的某个项目时,它不会触发ListView_RightTapped事件。

 <ListView x:Name="lstvwHours" HorizontalAlignment="Left" Height="264" Margin="427,77,0,0" VerticalAlignment="Top" Width="357" RightTapped="lstvwHours_RightTapped">

其次在Microsoft的上下文菜单代码示例中,他们说要使用PopupMenu类,但在其他代码中,我看到它编码到XAML中。

最后,在单击一个上下文菜单按钮后,我希望它触发一个删除方法。 private async void lstvwHours_RightTapped(object sender,

RightTappedRoutedEventArgs e)
{
    var menu = new PopupMenu();
    menu.Commands.Add(new UICommand("Delete"/*do I put the method to call here?*/));
    var chosenCommand = await menu.ShowForSelectionAsync(GetElementRect((FrameworkElement)sender));
}

1 个答案:

答案 0 :(得分:1)

这是一个例子。

在这种情况下,您可以将从您的menuitem调用的命令连接到您的视图模型。

<ListView>
    <ListViewItem Content="One">
        <ListViewItem.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Insert"
              Command="{Binding DataContext.InsertQuery, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
                <MenuItem Header="Delete" 
              Command="{Binding DataContext.DeleteQuery, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
            </ContextMenu>
        </ListViewItem.ContextMenu>
    </ListViewItem>
</ListView>