我有一个控件,旁边有一个按钮和scrollviewer。我希望能够通过箭头键或tab键来改变键盘焦点。我已经将scrollviewer的focusable设置为true,但它似乎仍然不能通过键盘获得焦点。如果我单击scrollviewer,然后我可以使用箭头键(向上/向下)滚动,但我实际上不能不使用鼠标导航到它。
我可以很好地聚焦在按钮上,如果我为另一个控件(在相同的位置)(如ScrollContentPresenter)更改ScrollViewer,那么另一个控件可以像我所期望的那样在自身和按钮之间切换焦点。
我试着理解为什么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>
1条答案
按热度按时间w6mmgewl1#
将
ScrollViewer
的IsTabStop
属性设置为true
似乎对我有用: