有没有内置的弹出窗口,比如当用户按住时

本文关键字:用户 内置 窗口 有没有 | 更新日期: 2023-09-27 18:26:23

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

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

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

有没有内置的弹出窗口,比如当用户按住时

您所指的在Windows Phone的世界中被称为ContextMenu。为此,您需要使用Windows Phone工具包(http://phone.codeplex.com/)您可以从NuGet轻松安装。它本身并不是一个内置控件,但它几乎是官方的,因为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定义"Click"事件处理程序,但我建议(如上面的示例所示)在命令上使用数据绑定,遵循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>

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

检查codeplex上WindowsPhone工具包中可用的上下文菜单。http://phone.codeplex.com