FrameworkElement.BringIntoView Metoda

Definicja

Próbuje przełączyć ten element do widoku w obrębie wszystkich regionów przewijanych, w których znajduje się.

Przeciążenia

BringIntoView(Rect)

Próbuje przenieść podany rozmiar regionu tego elementu do widoku w obrębie wszystkich regionów przewijanych, w których znajduje się.

BringIntoView()

Próbuje przełączyć ten element do widoku w obrębie wszystkich regionów przewijanych, w których znajduje się.

BringIntoView(Rect)

Próbuje przenieść podany rozmiar regionu tego elementu do widoku w obrębie wszystkich regionów przewijanych, w których znajduje się.

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 również powinien zostać przeniesiony 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 je było 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 wprowadzane do widoku 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 wartość inną niż Visible.

Jeśli używasz podpisu, który nie określa targetRectangleelementu , cały rozmiar elementu (jego RenderSize) będzie widoczny.

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

Zobacz też

Dotyczy

BringIntoView()

Próbuje przełączyć ten element do widoku w obrębie wszystkich regionów przewijanych, w których znajduje się.

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 nawigowany jest jednolity identyfikator zasobu (URI), aby zawierał fragment. Fragment ma nazwę w identyfikatorze URI po znaku skrótu (#), a zaimplementowane zachowanie powoduje przewinięcie elementu 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 je było 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 wprowadzane do widoku 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 wartość inną niż Visible.

Jeśli używasz podpisu, który nie określa targetRectangleelementu , cały rozmiar elementu (jego RenderSize) będzie widoczny.

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

Zobacz też

Dotyczy