有没有内置的弹出窗口,比如用户持有?

时间:2013-08-02 13:51:26

标签: c# windows-phone-7 xaml windows-phone-8

我希望当用户持有某个项目时,弹出窗口会显示删除,发送等等。

为了这个目的,我可以创建一个窗口并将其可见性设置为可见,但是有没有内置的方式,比如内置的ApplicationBar?

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

2 个答案:

答案 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