3

我正在开发一个使用 XAML 作为界面的基于 MonoGame 的游戏。但是,我在确保空格键不会触发 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 键,但一次一步。

任何帮助是极大的赞赏!

编辑:我已经对此进行了探讨。我已经选择按照我想要的方式工作。但是,问题是当我点击空格时,它会突出显示并“检查”我选择的网格项目,这不是我想要的。换句话说,我让它突出显示,就像选择了紫色一样,但是当我点击空格(在我的游戏中跳跃)时,它会在项目周围放置一个白色框并在角落放置一个“检查”。我想避免这种情况。我提出这个问题以获得更高的分数。真的很想知道如何解决这个问题。

4

1 回答 1

2

好的,这里的技巧实际上是禁用 UI elemenet 即。后端的gridview。确保选择了元素(我认为在哪里设置默认值并不重要)。在您的构造函数中,禁用该元素。结果,您现在有了一个有效的选择,如果需要,可以移动它。但是,它不会响应任何输入,因为它被禁用。如果您将 MonoGame 用于 Windows 8 游戏(因为他们出于某种原因决定放弃 XNA),那么这是防止通过 XAML 与 UI 元素进行任何键盘交互的好方法。您仍然可以通过 XNA 端获取输入并以这种方式操作您的界面。因此,使用禁用的界面,您现在可以从游戏中完全控制 UI,而不会出现任何意外的 XAML 行为。但是,如果您是为触摸设备执行此操作,

于 2012-12-17T19:04:12.687 回答