Поделиться через


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) после хэш-знака (#), а реализованное поведение приводит к тому, что элемент прокручивается в поле зрения в пределах кадра. 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 вызывается, но эффект не будет, так как прослушиватели событий отсутствуют.

См. также раздел

Применяется к