【问题标题】:UWP position flyout at mouse cursor鼠标光标处的 UWP 位置弹出
【发布时间】:2017-03-28 05:46:37
【问题描述】:

我有一个网格,里面有很多文本块,还有一个带有各种选项的弹出窗口。

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

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

【问题讨论】:

  • 你能告诉我们打开浮出控件的代码吗?

标签: c# uwp flyout


【解决方案1】:

我不知道您如何显示Flyout,但在我的应用程序中,我使用ListViewRightTapped 事件以及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));
}

【讨论】:

  • MenuFlyout 可以在特殊位置显示,但您不能在特定位置显示 Flyout。
  • 在指定位置显示会破坏子 MenuFlyoutItems 的 Tapped 事件。可能是最新 UWP SDK 中的一个错误。
  • 更新:这可以通过先调用 ShowAt(tappedItem) 然后调用 ShowAt(tappedItem, e.GetPosition(tappedItem)) 来解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
相关资源
最近更新 更多