无法在 WPF 中将键盘焦点设置为滚动查看器



我有一个控件,旁边有一个按钮和滚动查看器。我希望能够通过箭头键或tab键改变键盘焦点。我已经设置scrollviewer的可对焦为真,但它似乎仍然不能通过键盘获得焦点。如果我点击滚动查看器,那么我可以使用方向键(向上/向下)滚动,但如果不使用鼠标,我实际上无法导航到它。

我可以把焦点放在按钮上,如果我把scrollviewer换成另一个控件(在相同的位置),比如ScrollContentPresenter,那么另一个控件可以像我期望的那样在自己和按钮之间切换焦点。

我试图理解为什么ScrollViewer不能在这里获得焦点。我发现的所有搜索结果都有相反的问题(ScrollViewer窃取焦点)。同样,如果我在ScrollViewer中的控件上设置focusable为true,那么它也可以获得焦点。ScrollViewer似乎不可能获得焦点。

下面是注释掉ScrollContentPresenter的代码示例(当用来替换ScrollViewer时,它可以获得焦点)。

<Grid >
<StackPanel Orientation="Horizontal">
<Button Height="50" Width="300" Style="{StaticResource ButtonStyleLol}" />
<ScrollViewer Height="200" Width="1300"  Focusable="True">
<StackPanel Height="1000" >
<StackPanel.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black"/>
<GradientStop Color="#FFF71E1E" Offset="1"/>
</LinearGradientBrush>
</StackPanel.Background>
</StackPanel>
</ScrollViewer>
<!--<ScrollContentPresenter Height="200" Width="1300"  Focusable="True">
<ScrollContentPresenter.Content>
<StackPanel Height="1000">
<StackPanel.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black"/>
<GradientStop Color="#FFF71E1E" Offset="1"/>
</LinearGradientBrush>
</StackPanel.Background>
</StackPanel>
</ScrollContentPresenter.Content>
</ScrollContentPresenter>-->
</StackPanel>
</Grid>

ScrollViewerIsTabStop属性设置为true似乎对我有效:

<ScrollViewer IsTabStop="True" Focusable="True">

最新更新