我正在开发一款基于MonoGame的游戏,该游戏使用XAML作为界面。但是我遇到了一个问题,确保空格键不会触发XAML界面(它用于游戏中的其他内容)。现在我有一个gridview,里面有项目。当我击中太空时,它会突出显示一个我不希望它做的元素。我已经得到它实际上没有选择项目,但遗憾的是无法阻止它突出显示它(然后使用箭头键切换项目)。
以下是一些执行此操作的代码:
<GridView HorizontalAlignment="Left" Name="Powers" Margin="10,10,0,0" VerticalAlignment="Top" Width="229" Height="163" SelectionMode="None">
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Foreground="white" Width="50"></TextBlock>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</GridView.GroupStyle>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid MaximumRowsOrColumns="4" Orientation="Horizontal" ></VariableSizedWrapGrid>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
有没有办法阻止通过键盘突出物品?我希望能够将它重新连接到shift键,但一步一步。
非常感谢任何帮助!
编辑:我已经在这里探讨过了。我已经选择按照我想要的方式工作。但问题是,当我点击空间时,它突出显示并“检查”我选择的网格项目,这不是我想要的。换句话说,我让它突出显示,好像选择了紫色,但是当我击中空间(在我的游戏中跳跃)时,它会在项目周围放置一个白色方框并在角落放置一个“检查”。我想避免这种情况。我提出这个问题以获得更高的分数。真的很想知道如何解决这个问题。答案 0 :(得分:2)
好的,这里的技巧实际上是禁用UI elemenet即。后端的gridview。确保选中该元素(我认为将默认设置设置为不重要)。在构造函数中,禁用该元素。因此,您现在拥有一个有效的选择,如果需要可以转移。但是,自禁用以来,它不会响应任何输入。如果您使用MonoGame for Windows 8游戏(因为他们出于某种原因决定放弃XNA),那么这是一种防止任何键盘通过XAML与UI元素交互的好方法。您仍然可以通过XNA端获取输入并以这种方式操作您的界面。因此,使用禁用的界面,您现在可以完全控制游戏中的UI,而不会出现任何意外的XAML行为。但是,如果您正在为触摸设备执行此操作,则可能会或可能不会成为问题,但在触摸设备上,无论如何都更容易管理UI交互。