Język

FrameworkElement.BringIntoView Metoda

Definicja

Próbuje przełączyć ten element do widoku w dowolnych regionach, w których można je przewijać.

Przeciążenia

Nazwa Opis
BringIntoView(Rect)

Próbuje przenieść podany rozmiar regionu tego elementu do widoku w dowolnych regionach, w których jest on zawarty.

BringIntoView()

Próbuje przełączyć ten element do widoku w dowolnych regionach, w których można je przewijać.

BringIntoView(Rect)

Próbuje przenieść podany rozmiar regionu tego elementu do widoku w dowolnych regionach, w których jest on zawarty.

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)

Parametry

targetRectangle
Rect

Określony rozmiar elementu, który powinien być również wprowadzony do widoku.

Przykłady

Poniższy przykład zawiera dużą grafikę w ograniczonym regionie przewijania. Przycisk na stronie zawiera procedurę obsługi, która przewija widok do określonego regionu dużej grafiki.

<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

Uwagi

Wywołując tę metodę RequestBringIntoView , zgłaszasz zdarzenie pochodzące z bieżącego elementu. To zdarzenie jest wywoływane tak, aby można było go obsłużyć za pomocą klasy pochodnej ScrollViewerlub podobnej. Oczekiwane zachowanie polega na tym, że zdarzenie jest obsługiwane przez element nadrzędny, oznaczony jako obsługiwane w danych zdarzenia, a źródło zdarzenia jest wyświetlane za pośrednictwem logiki osadzonej w kontrolce ScrollViewer . Ani zdarzenie, ani RequestBringIntoViewBringIntoView metoda nie przesyłają żadnych informacji o powodzeniu lub niepowodzeniu, poza tym, że zdarzenie jest zwykle oznaczone jako obsługiwane w przypadku powodzenia. Przyczyny niepowodzenia mogą obejmować ustawienia elementu, takie jak Visibility niektóre wartości inne niż Visible.

Jeśli użyjesz podpisu, który nie określi targetRectanglewartości , cały rozmiar elementu (jego RenderSize) zostanie wyświetlony.

Wywołując tę metodę, potencjalnie wywołasz MakeVisible dowolny nadrzędny obszar przewijania zawierający element . Jeśli ten element nie jest zawarty w obszarze z możliwością przewijania, zdarzenie jest nadal zgłaszane, ale nie będzie żadnego efektu, RequestBringIntoView ponieważ nie ma odbiorników zdarzeń.

Zobacz też

Dotyczy

BringIntoView()

Próbuje przełączyć ten element do widoku w dowolnych regionach, w których można je przewijać.

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

Przykłady

W poniższym przykładzie zaimplementowano procedurę obsługi dla zdarzenia nawigacji aplikacji, które odpowiada za każdym razem, gdy identyfikator URI (Uniform Resource Identifier) jest przenoszony w taki sposób, aby zawierał fragment. Fragment ma nazwę w identyfikatorze URI po znaku skrótu (#), a zaimplementowane zachowanie powoduje, że element przewija się do widoku w ramce. BringIntoView i RequestBringIntoView zażądać tego zachowania przewijania w przykładzie.

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

Uwagi

Wywołując tę metodę RequestBringIntoView , zgłaszasz zdarzenie pochodzące z bieżącego elementu. To zdarzenie jest wywoływane tak, aby można było go obsłużyć za pomocą klasy pochodnej ScrollViewerlub podobnej. Oczekiwane zachowanie polega na tym, że zdarzenie jest obsługiwane przez element nadrzędny, oznaczony jako obsługiwane w danych zdarzenia, a źródło zdarzenia jest wyświetlane za pośrednictwem logiki osadzonej w kontrolce ScrollViewer . Ani zdarzenie, ani RequestBringIntoViewBringIntoView metoda nie przesyłają żadnych informacji o powodzeniu lub niepowodzeniu, poza tym, że zdarzenie jest zwykle oznaczone jako obsługiwane w przypadku powodzenia. Przyczyny niepowodzenia mogą obejmować ustawienia elementu, takie jak Visibility niektóre wartości inne niż Visible.

Jeśli użyjesz podpisu, który nie określi targetRectanglewartości , cały rozmiar elementu (jego RenderSize) zostanie wyświetlony.

Wywołując tę metodę, potencjalnie wywołasz MakeVisible dowolny nadrzędny obszar przewijania zawierający element . Jeśli ten element nie jest zawarty w obszarze z możliwością przewijania, zdarzenie jest nadal zgłaszane, ale nie będzie żadnego efektu, RequestBringIntoView ponieważ nie ma odbiorników zdarzeń.

Zobacz też

Dotyczy