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