Windows Phone 8.1中暂停列表视图上的Flyout菜单

3

当用户在listview上按住某个项目时,如何显示一个flyout菜单?我已经尝试过了,但是按住方法参考了listview而不是项目本身。


listview 不适用于 WP8。你是在说 WP8.1 吗? - Kulasangar
是的先生。正在更新问题。 - BlaShadow
1个回答

12

你可以订阅该项模板的持有事件。例如:

<ListView.ItemTemplate>
    <DataTemplate>
        <Grid Holding="Grid_Holding" VerticalAlignment="Stretch">
            <FlyoutBase.AttachedFlyout>
                <MenuFlyout>
                    <MenuFlyoutItem x:Name="EditButton"
                            Text="Edit"
                            Click="EditButton_Click"/>
                    <MenuFlyoutItem x:Name="DeleteButton"
                            Text="Delete"
                            Click="DeleteButton_Click"/>
                </MenuFlyout>
            </FlyoutBase.AttachedFlyout>
            <TextBlock Text="{Binding}" VerticalAlignment="Center"/>
        </Grid>
    </DataTemplate>
</ListView.ItemTemplate>

在代码后台中,显示弹出窗口:

private void Grid_Holding(object sender, HoldingRoutedEventArgs e)
{
    FrameworkElement senderElement = sender as FrameworkElement;
    // If you need the clicked element:
    // Item whichOne = senderElement.DataContext as Item;
    FlyoutBase flyoutBase = FlyoutBase.GetAttachedFlyout(senderElement);
    flyoutBase.ShowAt(senderElement);
}

private async void EditButton_Click(object sender, RoutedEventArgs e)
{
    // get the clicked element:
    Item datacontext = (e.OriginalSource as FrameworkElement).DataContext as Item;
    await new MessageDialog("Edit").ShowAsync();
}

如果您喜欢,也可以使用行为来完成。您还可以在Igrali的博客文章中找到一些帮助。


谢谢,这非常有帮助。 - J86
@Romasz - 使用整个 holded 项目会弹出。有没有属性可以将项目保持在原位? - Rohit Garg
@RohitGarg 我不知道。我认为这也是一个好问题,所以在SO上提问吧。 - Romasz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接