2

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: 列ヘッダーのTextBoxへのタブ移動

GridViewColumnHeadersキーボードにアクセスできるようにするには何をする必要がありますか?

4

1 に答える 1

2

内部の誰かが解決策を持っていました。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 を設定します。

于 2012-05-02T19:30:12.883 に答える