0
是否可以在WPF框架中禁用默认ScrollViewer的内置行为?该场景如下:聚焦放置在ScrollViewer中的UIElement,导致UIElement滚动到视图中,我可以禁用它吗?
- 我有一个ScrollViewer与放置在其中的StackPanel。
- 在那个StackPanel中有许多UIElement(例如TextBox控件)
- 使用Focus()方法将其中一个TextBox控件(当前不可见)聚焦到视图中它可见。
我想禁用此行为,但我不知道如何处理此问题。我是否需要编写自己的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();
}
感谢您的帮助。