FrameworkElement.BringIntoView 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
尝试将此元素放入其所在的任何可滚动区域内的视图中。
重载
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 中以哈希符号 (#) 命名,实现的行为会导致元素滚动到帧内的视图中。 BringIntoView 和 RequestBringIntoView 请求示例中的滚动行为。
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 仍会引发该事件,但由于没有事件侦听器,因此不会产生任何影响。