我希望当用户持有某个项目时,弹出窗口会显示删除,发送等等。
为了这个目的,我可以创建一个窗口并将其可见性设置为可见,但是有没有内置的方式,比如内置的ApplicationBar?
任何参考都有帮助。 (这是WP8应用程序)。
答案 0 :(得分:2)
您所指的是在Windows Phone世界中称为ContextMenu。要实现这一点,您需要使用可以从NuGet轻松安装的Windows Phone Toolkit(http://phone.codeplex.com/)。它本身并不是一个内置的控件,但它仍然接近正式,因为WP Toolkit基本上是由Windows Phone团队的一些成员完成的(随着时间的推移,一些控件会被移植到内置框架中,如下所示)最近由LongListSelector和其他几个人合作过。)
所以要使用它,它非常简单。在XAML中的任何UIElement中,您只需在其中定义以下内容(在此示例中,UIElement是Grid):
<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定义'Click'事件处理程序,但我建议(以及上面的示例中显示)您遵循MVVM原则在Command上使用数据绑定。这是因为当您特别在列表项上使用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>
这样,在命令的execute handler中,您将把数据项对象轻松地作为参数传入。
答案 1 :(得分:1)
检查codeplex上WindowsPhone工具包中的contextMenu。 http://phone.codeplex.com