私の WPF 4.0 デスクトップ ベースのアプリケーションでは、タブ ボタンを押してウィンドウ要素をトラバースする機能を追加したいと考えています。
これが私の XAML のフラグメントです。
<!--main body layout-->
<StackPanel x:Name="BodyLayout"
Style="{StaticResource Body_Block}">
<!--teaser block-->
<Grid x:Name="TeaserGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Style="{StaticResource Body_Teaser_Centering}">
<Hyperlink Style="{StaticResource Body_Teaser_Hyperlink}"
Focusable="True"
KeyboardNavigation.TabIndex="0"
Click="Call_WinOffences_Click">
<Image Source="Resources/teaser_offences.png"
Style="{StaticResource Body_Teaser_Image}" />
<LineBreak />
<TextBlock Text="Offences"
Style="{StaticResource Body_Title}" />
</Hyperlink>
</TextBlock>
<TextBlock Grid.Column="1"
Grid.Row="0"
Style="{StaticResource Body_Teaser_Centering}">
<Hyperlink Style="{StaticResource Body_Teaser_Hyperlink}"
Focusable="True"
KeyboardNavigation.TabIndex="1"
Click="Call_WinEvents_Click">
<Image Source="Resources/teaser_events.png"
Style="{StaticResource Body_Teaser_Image}" />
<LineBreak />
<TextBlock Text="Events"
Style="{StaticResource Body_Title}" />
</Hyperlink>
</TextBlock>
</Grid>
</StackPanel>
正確に何が必要ですか?このウィンドウを開き、最初に Tab キーボードを押してハイパーリンク ブロック (Image
とTextBlock
) にフォーカスを設定TabIndex="0"
し、2 番目の Tab を押して要素にフォーカスを切り替えるとTabIndex="1"
、このスイッチを循環させたいと考えています。言い換えれば、他の通常の WinForms アプリケーションでは通常これを行うため、ユーザーが Tab キーボードでウィンドウ内の要素をナビゲートできるようにしたいと考えています。
実際に私は今何を持っていますか? Tab キーボードを押すと、ハイパーリンクがフォーカスされず、マウスがないとウィンドウで作業できません。
教えてください、何が間違っているのですか?