2017-07-31 71 views
1

我有一个使用DataTemplate提供UI的GridView,以便用户可以管理对数据服务的订阅。 DataTemplate包含文本和图像以及Button和ToggleButton。在移动和桌面上使用此功能,用户可以点击或单击控件中的按钮。在桌面上,您甚至可以在控件中选择Tab并选择按钮。但是,在Xbox上,我只能关注每个DataTemplate项目,我无法将其专注于内部按钮,是否有办法解决此问题,而无需在Xbox上启用鼠标模式?GridView的DataTemplate中的焦点控制

<DataTemplate x:Key="DataTemplate1"> 
     <Grid Background="#33FFFFFF"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="100"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="*"/> 
       <RowDefinition Height="*"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Image HorizontalAlignment="Center" Height="100" VerticalAlignment="Center" Width="80" Source="{Binding TEAMID, Converter={StaticResource uriConverter}}" Grid.RowSpan="3"/> 
      <TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" Text="{Binding TEAMNAME}" VerticalAlignment="Top" Grid.Column="1"/> 
      <Button Content="Unsubscribe" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" Tag="{Binding TEAMID}" Tapped="Button_Tapped"/> 
      <ToggleButton x:Name="subscribe_tb" Content="&#xE840;" HorizontalAlignment="Center" FontFamily="Segoe MDL2 Assets" Tag="{Binding TEAMID}" IsChecked="{Binding isPinned}" Grid.Row="3" Grid.Column="1" Unchecked="subscribe_tb_Unchecked" Checked="subscribe_tb_Checked"/> 
     </Grid> 
</DataTemplate> 
+0

所以当你浏览,它完全忽略了里面的按钮,或者你看不到任何可视聚焦? –

+0

焦点视觉是围绕外框(基本上是网格),并且您不能使用控制器将焦点移动到按钮内部,只能移动到下一个数据平台等。 –

+0

这可能是一个长镜头,但我认为您可以尝试先启用'GridView'上的'IsFocusEngagementEnabled',然后在'GridViewItem'样式中将'IsTabStop'设置为'False'。 –

回答

2

通过改变GridView.ItemContainerStyle的方式解决:

<GridView.ItemContainerStyle> 
       <Style TargetType="GridViewItem"> 
        <Setter Property="IsFocusEngagementEnabled" Value="True"/> 
        <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
       </Style> 
</GridView.ItemContainerStyle>