【问题标题】:Prevent highlighting/selection through keyboard XAML?防止通过键盘 XAML 突出显示/选择?
【发布时间】:2012-12-01 01:58:06
【问题描述】:

我正在开发一个使用 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 键,但一次一步。

非常感谢任何帮助!

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

【问题讨论】:

  • GridView 有 FocusVisualStyle 属性吗?如果是这样,那么FocusVisualStyle="{x:Null}" 有帮助吗?
  • 嗯,似乎在 标签中没有给我这个选项。但是,我确实需要一种视觉风格,但我不希望它被空格键触发。

标签: c# xaml xna monogame


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-09-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多