У меня есть сетка и кнопка. Я хочу иметь возможность нажать стрелка вниз , чтобы выбрать строку, затем нажать кнопку, затем нажать стрелка вниз , чтобы выбрать следующий ряд, а затем нажать кнопку.
Однако, когда я нажимаю на кнопку, фокус сетки клавиатуры больше не находится на строке.
Вот пример. На этой картинке у меня выбран третий ряд. Мне нужно следующее поведение: я щелкаю мышью по Нажмите Me , затем нажмите стрелку вниз на клавиатуре один раз, чтобы выбрать четвертый ряд. Вместо этого, когда я нажимаю стрелка вниз , вокруг верхней ячейки появляется рамка, а когда я нажимаю ее снова, выбирается верхняя строка.
Как мне создать такое поведение, которое мне нужно? Я попытался отредактировать код, чтобы явно сосредоточиться на сетке, но это не сработало.
Вот полный код для примера.
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<XmlDataProvider x:Key="DcCharacters">
<x:XData>
<Characters xmlns="">
<Character HeroName="Catwoman" Identity="Selina Kyle" />
<Character HeroName="Batman" Identity="Bruce Wayne" />
<Character HeroName="Starman" Identity="Jack Knight" />
<Character HeroName="BlueBeetle" Identity="Jaime Reyes" />
</Characters>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid
Grid.Row="0"
ItemsSource="{Binding Source={StaticResource DcCharacters},
XPath=//Characters/Character}"
AutoGenerateColumns="False"
IsReadOnly="True"
>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding XPath=@HeroName}" />
<DataGridTextColumn Binding="{Binding XPath=@Identity}" />
</DataGrid.Columns>
</DataGrid>
<StackPanel Grid.Row="1">
<Button Margin="3,3,3,3" Width="Auto" Height="Auto" HorizontalAlignment="Left">_Press Me!</Button>
</StackPanel>
</Grid>
</Window>