1

所以我在这里遵循了解决方案:ContextMenu on tap 而不是点击并按住弹出在“tap”而不是“hold”上打开一个 ContextMenu 最终可以工作,有点......

正如另一位用户在对该答案的回复中提到的那样,ContextMenu 实际上是在屏幕顶部打开的,而不是从“点击”它的位置。

任何想法为什么会发生这种情况以及解决它的任何建议?

资源 XAML:

<DataTemplate x:Key="InventoryListDataTemplate">
    <StackPanel Orientation="Vertical" Margin="0,0,0,17" Tap="OpenContextMenu">
    <toolkit:ContextMenuService.ContextMenu>
        <toolkit:ContextMenu x:Name="WeaponContextMenu">
            <toolkit:MenuItem Header="Equip" />
            <toolkit:MenuItem Header="Discard" />
        </toolkit:ContextMenu>
    </toolkit:ContextMenuService.ContextMenu>
    </StackPanel>
</DataTemplate>

内容 XAML:

<Grid>
    <ListBox ItemTemplate="{StaticResource InventoryListDataTemplate}" Name="InventoryAllListBox" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</Grid>

代码:

private void OpenContextMenu(object sender, EventArgs e)
{
    ContextMenu contextMenu = ContextMenuService.GetContextMenu(sender as StackPanel);

    if (contextMenu.Parent == null)
    {
        contextMenu.IsOpen = true;
    }
}
4

0 回答 0