0

我希望当用户持有一个项目时,会出现一个弹出窗口,用于删除、发送等。

为此,我可以创建一个窗口并将其可见性设置为可见,但是是否有任何内置方式,例如内置 ApplicationBar?

任何参考都是有帮助的。(它是 WP8 应用程序)。

4

2 回答 2

2

您所指的是在 Windows Phone 世界中称为 ContextMenu。要实现这一点,您需要使用可以从 NuGet 轻松安装的 Windows Phone 工具包 ( http://phone.codeplex.com/ )。它本身不是内置控件,但无论如何它都接近官方了,因为 WP Toolkit 基本上是由 Windows Phone 团队的一些成员完成的(其中一些控件随着时间的推移被移入内置框架,例如最近由 LongListSelector 和其他几个)。

所以要使用它,它非常简单。在 XAML 中的任何 UIElement 上,您只需在其中定义以下内容(在此示例中,UIElement 是一个网格):

<Grid>
    <toolkit:ContextMenuService.ContextMenu>
        <toolkit:ContextMenu>
            <toolkit:MenuItem
                Header="Menu Item One"
                Command="{Binding MenuOneCommand}" />
            <toolkit:MenuItem
                Header="Menu Item Two"
                Command="{Binding MenuTwoCommand}" />
        </toolkit:ContextMenu>
    </toolkit:ContextMenuService.ContextMenu>
</Grid>

您可以为每个 MenuItem 定义“单击”事件处理程序,但我建议(以及在上面的示例中所示)您在命令上使用数据绑定,遵循 MVVM 原则。这是因为当您特别在列表项上使用 ContextMenu 时,通常很难确定它属于哪个项目,而当您使用绑定时,您可以轻松地在 CommandParameter 中绑定当前数据上下文(即项目) . 例如:

<DataTemplate x:Key="ListItemTemplate">
    <Grid>
        <toolkit:ContextMenuService.ContextMenu>
            <toolkit:ContextMenu>
                <toolkit:MenuItem
                    Header="Delete Item"
                    Command="{Binding DeleteItemCommand}" CommandParameter="{Binding}" />
            </toolkit:ContextMenu>
        </toolkit:ContextMenuService.ContextMenu>
    </Grid>
</DataTemplate>

这样,在命令的执行处理程序中,您将轻松地将数据项对象作为参数传入。

于 2013-08-02T14:47:00.060 回答
1

检查 codeplex 上 WindowsPhone 工具包中可用的 contextMenu。 http://phone.codeplex.com

于 2013-08-02T14:30:20.617 回答