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 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 targetRectangle
elementu , 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 targetRectangle
elementu , 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ń.