Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 聚焦放置在ScrollViewer中的UIElement导致UIElement滚动到视图中,我可以禁用此功能吗?_.net_Wpf_Scrollviewer - Fatal编程技术网

.net 聚焦放置在ScrollViewer中的UIElement导致UIElement滚动到视图中,我可以禁用此功能吗?

.net 聚焦放置在ScrollViewer中的UIElement导致UIElement滚动到视图中,我可以禁用此功能吗?,.net,wpf,scrollviewer,.net,Wpf,Scrollviewer,是否可以在WPF框架中禁用默认ScrollViewer的这种内置行为?情况如下: 我有一个ScrollViewer,里面有一个StackPanel 在该StackPanel中有许多UIElement(例如TextBox控件) 使用Focus()方法聚焦其中一个TextBox控件(当前不可见)会使TextBox显示在视图中 我想禁用此行为,但我不确定如何实现。我是否需要编写自己的ScrollViewer控件,或者有一个我不知道的附加属性禁用了这个“ScrollIntoView”逻辑。以下是该场

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

  • 我有一个ScrollViewer,里面有一个StackPanel
  • 在该StackPanel中有许多UIElement(例如TextBox控件)
  • 使用Focus()方法聚焦其中一个TextBox控件(当前不可见)会使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();
}

私有无效按钮\u单击(对象发送者,路由目标e)
{
this.Item6.Focus();
}

谢谢你的帮助。

在通过互联网进行深入搜索后,我找到了。感谢安德鲁斯在这篇文章中的回答。基本上,我要做的是处理ScrollViewer控件内面板的RequestBringIntoView事件,或者在我的示例中,在通过internet进行深入搜索后处理StackPanel

。感谢安德鲁斯在这篇文章中的回答。基本上,我要做的是处理ScrollViewer控件内面板的RequestBringIntoView事件,或者在我的示例中处理StackPanel

您能告诉我如何通过代码处理StackPanel的RequestBringIntoView吗?我仍然很困惑。这是一个事件,只需附加一个事件处理程序。您能告诉我您是如何通过代码处理StackPanel的RequestBringIntoView的吗?我仍然很困惑。这是一个事件,只需附加一个事件处理程序