2012-05-01 15 views
1

私たちが持っているListViewの要件は、デフォルトのListViewでは起こらない、列ヘッダーをキーボードでアクセスできることです。例:GridViewColumnHeadersのキーボードアクセス?

<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キーボードにアクセスするには何が必要ですか?

答えて

1

内部の誰かが溶液を持っていました。 GridViewColumnHeaderのControlTemplateでは、真= FocusableのことのContentPresenterを設定し、次のように:また

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

、ローカルリストビューKeyboardNavigation.TabNavigation =を設定します。

関連する問題