列表视图上的标签焦点正在跳过标题

问题描述

我有一个列表视图控件,如下所示,它具有标题模板和项目模板。单击打开此列表视图的按钮时,焦点首先会出现在整个列表视图上。 在点击选项卡时,焦点转到第一个跳过标题的列表视图项。 无论如何,我可以使用向上箭头/向下箭头键导航到标题,但预期的行为是点击选项卡,焦点首先来到标题模板

<ListView 
    x:Name="DataListView"
    Grid.Row="1" 
    IsItemClickEnabled="True"
    ItemClick="ListView_ItemClick"
    RightTapped="ListView_RightTapped"
    SelectionMode="None"
    IsTabStop="{x:Bind utilities:XamlExtensions.Invert(viewmodel.IsInitialSetupCompleted),Mode=OneWay}"
    ItemTemplateSelector="{StaticResource ItemTemplateSelector}">
    <ListView.ItemContainerStyle>
        <Style targettype="ListViewItem" BasedOn="{StaticResource NoMarginListStyle}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            <Setter Property="VerticalContentAlignment" Value="Stretch"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderContainerStyle>
                <Style targettype="ListViewHeaderItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                </Style>
            </GroupStyle.HeaderContainerStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate x:DataType="today:HeaderGroupviewmodel">
                    <Grid>
                        <Grid.ColumnDeFinitions>
                            <ColumnDeFinition Width="*"/>
                            <ColumnDeFinition Width="*"/>
                        </Grid.ColumnDeFinitions>
                        <TextBlock 
                            Text="{x:Bind Name}"
                            Grid.Column="0"
                            textwrapping="WrapWholeWords"/>
                        <Button
                            Grid.Column="1"
                            Click="MoreOptions_Click"
                            RightTapped="Button_RightTapped"
                            Style="{ThemeResource BrandedchromelessButton}">
                        </Button>
                    </Grid>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
        </GroupStyle>
    </ListView.GroupStyle>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <ItemsstackPanel AreStickyGroupHeadersEnabled="False"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

感谢任何帮助。我尝试使用标签索引但没有用。谢谢

解决方法

ListviewItem 可以正常点击然后获得焦点。

因此,您可以将 ListviewItem 添加到 HeaderTemplate 的 DataTemplate 中,如下所示。

<ListView.GroupStyle>
    <GroupStyle >
        <GroupStyle.HeaderTemplate>
            <DataTemplate>
                <ListViewItem>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Key}" FontSize="35" FontWeight="Bold"/>
                        <Button Margin="30,0" />
                    </StackPanel>
                </ListViewItem>
            </DataTemplate>
        </GroupStyle.HeaderTemplate>
    </GroupStyle>
</ListView.GroupStyle>

更新:

您可以将 ListView 的 IsTabStop 属性和 HeaderItem 中的 button 设置为 false。
请参阅以下内容。

<ListView 
 ……                  
 IsTabStop="False">
            ……
           <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock ……/>
                            <Button IsTabStop="False"  Grid.Column="1" Margin="30,0" Content="Click me"/>
                        </Grid>
                    </DataTemplate>
            </GroupStyle.HeaderTemplate>
   ….        
</ListView>