2012-12-13 60 views
3

我正在使用基于MonoGame的游戏,它使用XAML作为界面。然而,我有一个问题,确保空格键不会触发XAML接口(它用于游戏中的其他内容)。现在我有一个包含项目的gridview。当我点击空间时,它突出了一个我不希望它做的元素。我已经知道它并没有真正选择该项目,但不幸的是无法阻止它突出显示它(然后使用箭头键切换项目)。防止通过键盘XAML突出显示/选择?

下面是一些代码,这是否:

<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> 

有没有什么办法来防止通过键盘项目的highliting?我希望能够将它重新连接到换档键,但一次只能一步。

任何帮助,非常感谢!

编辑:我捅了这个。我已经选择以我想要的方式工作。然而,问题在于,当我点击空间时,它突出显示并“检查”我选择的网格物品,这不是我想要的。换句话说,我将它突出显示,就好像选择了紫色一样,但是当我点击空间时(为了在我的游戏中跳跃),它会在项目周围放置一个白色框,并在角落中放置一个“Check”。我想避免这种情况。我正在提出这个问题的更高点。真的很想知道如何解决这个问题。

+0

GridView是否具有FocusVisualStyle属性?如果是,那么'FocusVisualStyle =“{x:Null}”'help? – idursun

+0

也许这有助于:http://stackoverflow.com/questions/3046988/wpf-datagrid-disable-selected-row-styles-or-row-selecting – dognose

+0

嗯,似乎没有给我在标签中的选项。不过,我确实需要一种视觉风格,但我不希望它被空格键触发。 –

回答

2

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

相关问题