【问题标题】:Keyboard access for GridViewColumnHeaders?GridViewColumnHeaders 的键盘访问?
【发布时间】:2012-05-11 05:42:35
【问题描述】:

我们的 ListView 要求是列标题可以通过键盘访问,而默认 ListView 不会发生这种情况。例如:

    <StackPanel x:Name="LayoutRoot">
    <ListView HorizontalAlignment="Left" KeyboardNavigation.TabNavigation="Local">
        <ListView.View>
            <GridView >
                <GridViewColumn Header="Header _1" KeyboardNavigation.TabIndex="0"/>
                <GridViewColumn Header="Header _2" KeyboardNavigation.TabIndex="1"/>
                <GridViewColumn Header="header _3" KeyboardNavigation.TabIndex="2"/>
            </GridView>
        </ListView.View>
        <ListViewItem Content="I'm the first item" />
        <ListViewItem Content="I'm the second item" />
    </ListView>
    <Button Content="I can also get focus" HorizontalAlignment="Left" Margin="0,27,0,0"/>
</StackPanel>

显示标题的访问键,但它们没有获得键盘焦点。我通过阅读此问题添加的 TabIndex 和 TabNavigation : tabbing to TextBoxes in column headers

我需要做什么才能使 GridViewColumnHeaders 键盘可以访问?

【问题讨论】:

    标签: wpf xaml gridview gridviewcolumn


    【解决方案1】:

    内部有人找到了解决方案。在 GridViewColumnHeader ControlTemplate 中,将 ContentPresenter 设置为 Focusable=true,如下所示:

                <ContentPresenter x:Name="ContentPresenter"
                    Style="{StaticResource ListViewContentPresenterStyle}" 
                    ContentTemplate="{TemplateBinding ContentTemplate}" 
                    SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                    RecognizesAccessKey="True"
                    Focusable="True"
                    Grid.Column="1">
    

    另外,设置 ListView KeyboardNavigation.TabNavigation=Local。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2023-03-09
      • 2021-07-08
      相关资源
      最近更新 更多