所以我在这里遵循了解决方案: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;
}
}