2016-11-14 2 views
0

У меня есть сетка с загрузкой текстовых блоков внутри и выпадающее меню с различными вариантами, привязанными к сетке.Вывод позиции UWP при указателе мыши

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

Проблема заключается в том, что выпадающая будет появляться в том же фиксированном месте где-то в середине сетки, или я могу установить его программно появляться на элементе. Я хочу, чтобы он появлялся везде, где была нажата правая кнопка мыши. Возможно ли это, или я об этом ошибаюсь?

+0

Можете ли вы показать нам код, который открывает всплывающее окно? –

ответ

2

Я не знаю, как вы показывая Flyout, но в моем приложении, я использую RightTapped событие моей ListView и следующий код в обработчик события 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)); 
} 
+0

MenuFlyout может отображаться в специальном положении, но вы не можете показать вылет в определенном положении. – lindexi

+0

Отображение в указанной позиции разбивает событие Tapped дочерних элементов MenuFlyoutItems. Вероятно, ошибка в последнем UWP SDK. –

+0

UPDATE: это можно обойти, сначала вызов ShowAt (tappedItem), затем вызывая ShowAt (tappedItem, e.GetPosition (tappedItem)). –

Смежные вопросы