FrameworkElement.BringIntoView Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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ń.