FrameworkElement.BringIntoView 方法

定义

尝试将此元素放入其所在的任何可滚动区域内的视图中。

重载

BringIntoView(Rect)

尝试将此元素的提供区域大小放入其所在的任何可滚动区域内的视图中。

BringIntoView()

尝试将此元素放入其所在的任何可滚动区域内的视图中。

BringIntoView(Rect)

尝试将此元素的提供区域大小放入其所在的任何可滚动区域内的视图中。

public:
 void BringIntoView(System::Windows::Rect targetRectangle);
public void BringIntoView (System.Windows.Rect targetRectangle);
member this.BringIntoView : System.Windows.Rect -> unit
Public Sub BringIntoView (targetRectangle As Rect)

参数

targetRectangle
Rect

也应放入视图中的元素的指定大小。

示例

以下示例在受约束的滚动区域中有一个大图形。 页面上的按钮有一个处理程序,该处理程序将视图滚动到大图形的特定区域。

<ScrollViewer Width="300" Height="300" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible">
  <Image Name="mapframe" ScrollViewer.CanContentScroll="True"  >
    <Image.Source>
      <BitmapImage UriSource="treasuremap.bmp"/>
    </Image.Source>
  </Image>
</ScrollViewer>
<StackPanel>
  <Button Click="GoToLake">Go to Lake</Button>

</StackPanel>
void GoToLake(object sender, RoutedEventArgs e)
{
    mapframe.BringIntoView(new Rect(800, 400, 200, 200));
}
Private Sub GoToLake(ByVal sender As Object, ByVal e As RoutedEventArgs)
    mapframe.BringIntoView(New Rect(800, 400, 200, 200))
End Sub

注解

通过调用此方法,将引发 RequestBringIntoView 源自当前元素的事件。 引发此事件,以便可由 、派生类或类似类处理 ScrollViewer。 预期行为是事件由父元素处理,在事件数据中标记为已处理,并且事件源通过控件中 ScrollViewer 嵌入的逻辑进入视图。 RequestBringIntoView事件和 BringIntoView 方法都不会传输有关成功或失败的任何信息,除了事件通常标记为成功时已处理。 失败的原因可能包括 元素设置,例如 Visibility 是 以外的 Visible某个值。

如果使用未指定 的 targetRectangle签名,则 (其 RenderSize) 的整个元素大小都将可见。

通过调用此方法,可能会在包含 元素的任何父可滚动区域上调用 MakeVisible 。 如果此元素未包含在可滚动区域中,则 RequestBringIntoView 仍会引发该事件,但由于没有事件侦听器,因此不会产生任何影响。

另请参阅

适用于

BringIntoView()

尝试将此元素放入其所在的任何可滚动区域内的视图中。

public:
 void BringIntoView();
public void BringIntoView ();
member this.BringIntoView : unit -> unit
Public Sub BringIntoView ()

示例

以下示例为应用程序导航事件实现处理程序,每当导航到的统一资源标识符 (URI) 包含片段时,该事件都做出响应。 片段在 URI 中以哈希符号 (#) 命名,实现的行为会导致元素滚动到帧内的视图中。 BringIntoViewRequestBringIntoView 请求示例中的滚动行为。

void browserFrame_FragmentNavigation(object sender, FragmentNavigationEventArgs e)
{
    object content = ((ContentControl)e.Navigator).Content;
    FrameworkElement fragmentElement = LogicalTreeHelper.FindLogicalNode((DependencyObject)content, e.Fragment) as FrameworkElement;
    if (fragmentElement == null)
    {
        // Redirect to error page
        // Note - You can't navigate from within a FragmentNavigation event handler,
        //        hence creation of an async dispatcher work item
        this.Dispatcher.BeginInvoke(
            DispatcherPriority.Send,
            (DispatcherOperationCallback) delegate(object unused) 
            {
                this.browserFrame.Navigate(new Uri("FragmentNotFoundPage.xaml", UriKind.Relative));
                return null;
            },
            null);
        e.Handled = true;
    }
}
Private Sub browserFrame_FragmentNavigation(ByVal sender As Object, ByVal e As FragmentNavigationEventArgs)
    Dim element As FrameworkElement = TryCast(LogicalTreeHelper.FindLogicalNode(DirectCast(DirectCast(e.Navigator, ContentControl).Content, DependencyObject), e.Fragment), FrameworkElement)
    If (element Is Nothing) Then
        ' Redirect to error page
        ' Note - You can't navigate from within a FragmentNavigation event handler,
        '        hence creation of an async dispatcher work item
        Dim callback As New DispatcherOperationCallback(AddressOf Me.FragmentNotFoundNavigationRedirect)
        Me.Dispatcher.BeginInvoke(DispatcherPriority.Normal, callback, Nothing)
    End If
    e.Handled = True
End Sub

Function FragmentNotFoundNavigationRedirect(ByVal unused As Object) As Object
    Me.browserFrame.Navigate(New Uri("FragmentNotFoundPage.xaml", UriKind.Relative))
    Return Nothing
End Function

注解

通过调用此方法,将引发 RequestBringIntoView 源自当前元素的事件。 引发此事件,以便可由 、派生类或类似类处理 ScrollViewer。 预期行为是事件由父元素处理,在事件数据中标记为已处理,并且事件源通过控件中 ScrollViewer 嵌入的逻辑进入视图。 RequestBringIntoView事件和 BringIntoView 方法都不会传输有关成功或失败的任何信息,除了事件通常标记为成功时已处理。 失败的原因可能包括 元素设置,例如 Visibility 是 以外的 Visible某个值。

如果使用未指定 的 targetRectangle签名,则 (其 RenderSize) 的整个元素大小都将可见。

通过调用此方法,可能会在包含 元素的任何父可滚动区域上调用 MakeVisible 。 如果此元素未包含在可滚动区域中,则 RequestBringIntoView 仍会引发该事件,但由于没有事件侦听器,因此不会产生任何影响。

另请参阅

适用于