我有一个内部装有大量文本块的网格,以及一个带有附加到网格的各种选项的弹出按钮。

<FlyoutBase.AttachedFlyout>
    <MenuFlyout>
        <MenuFlyoutItem x:Name="EditButton" Text="Edit" Click="EditButton_Click"/>
        <MenuFlyoutItem x:Name="DeleteButton" Text="Delete"/>
    </MenuFlyout>
</FlyoutBase.AttachedFlyout>


问题是弹出控件将出现在网格中间某个固定点上,或者我可以通过编程将其设置为出现在某个元素上。我希望它显示在鼠标右键单击的任何位置。这可能吗,还是我走错路了?

最佳答案

我不知道您如何显示Flyout,但是在我的应用程序中,我使用RightTappedListView事件,并在RightTapped事件处理程序中使用以下代码来实现所需的功能。

private void MyListView_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
    var tappedItem     = (UIElement)e.OriginalSource;
    var attachedFlyout = (MenuFlyout)FlyoutBase.GetAttachedFlyout(MyListView);

    attachedFlyout.ShowAt(tappedItem, e.GetPosition(tappedItem));
}

10-08 15:18