聚焦放置在 ScrollViewer 内的 UIElement 导致 UIElement 滚动到视图中,我可以禁用它吗?

Focusing an UIElement placed inside a ScrollViewer causing the UIElement to be scrolled into the view, can I disable this?

是否可以在 WPF 框架中禁用默认 ScrollViewer 的这种内置行为?场景如下:

我想禁用此行为,但不确定如何处理。我需要编写自己的 ScrollViewer 控件还是有一个附加的 属性 我不知道禁用此 "ScrollIntoView" 逻辑。以下是场景的一些代码片段:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <StackPanel>
        <Button Content="Focus Item 6" Margin="10" Click="Button_Click"/>
        <TextBox Text="Lost focus" Margin="10"/>
    </StackPanel>
   <ScrollViewer Grid.Row="1">
        <StackPanel>
            <TextBox Text="Item 1" Height="100" x:Name="Item1"/>
            <TextBox Text="Item 2" Height="100" x:Name="Item2"/>
            <TextBox Text="Item 3" Height="100" x:Name="Item3"/>
            <TextBox Text="Item 4" Height="100" x:Name="Item4"/>
            <TextBox Text="Item 5" Height="100" x:Name="Item5"/>
            <TextBox Text="Item 6" Height="100" x:Name="Item6"/>
        </StackPanel>
    </ScrollViewer>
</Grid>

private void Button_Click(object sender, RoutedEventArgs e)
{
    this.Item6.Focus();
}

感谢您的帮助。

通过互联网进行更深入的搜索后,我发现 this answer。感谢 AndrewS 在该线程中的回答。基本上我必须做的是处理 ScrollViewer 控件内面板的 RequestBringIntoView 事件,或者在我的示例中 StackPanel.