Обновление
Я скопировал ваш пример кода (за исключением стилей, которых у меня не было) в небольшой проект, и он, кажется, работает нормально для меня.Я могу запустить Окно, нажать Tab для фокусировки первой гиперссылки, нажать Enter и событие Click возникает, снова нажать Tab и т. Д. Единственное, что я могу думать, это то, что что-то в ваших стилях отменяет это поведение.Я загрузил мой пример проекта здесь .
Примечание: я изменил источник для изображений, поэтому вам придется изменить их обратно:)
Старый пост
Здесь есть две части.Первый, если FrameworkElement является Фокусируемым или нет.Второй - это TabIndex.TabIndex находится в Control, который является производным от FrameworkElement, и не все элементы происходят от Control, такие как TextBlock, Rectangle и т. Д. Если вы по какой-то причине хотите добавить TabIndex к таким элементам, вы можете использовать KeyboardNavigation.TabIndex.Вот простой пример с 6 элементами управления с установленным порядком табуляции и 1 прямоугольником, который нельзя сфокусировать (поскольку он по умолчанию не фокусируется).
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0"
Content="Some Button"
KeyboardNavigation.TabIndex="0"
Margin="5"/>
<TextBox Grid.Row="1" Grid.Column="0"
Text="Some TextBox"
KeyboardNavigation.TabIndex="2"
Margin="5"/>
<TextBox Grid.Row="2" Grid.Column="0"
Text="Another TextBox"
KeyboardNavigation.TabIndex="1"
Margin="5"/>
<TextBlock Grid.Row="0" Grid.Column="1"
Text="Focusable TextBlock"
Focusable="True"
KeyboardNavigation.TabIndex="4"
Margin="5"/>
<Rectangle Grid.Row="1" Grid.Column="1"
Fill="Blue"
Margin="5"/>
<Rectangle Grid.Row="2" Grid.Column="1"
Fill="Red"
Focusable="True"
KeyboardNavigation.TabIndex="3"
Margin="5"/>
</Grid>