FrameworkElement.BringIntoView Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Pokusí se přenést tento prvek do zobrazení v rámci všech posouvatelných oblastí, ve kterých je obsažen.
Přetížení
BringIntoView(Rect) |
Pokusí se zobrazit zadanou velikost oblasti tohoto prvku v rámci všech posouvatelných oblastí, ve kterých je obsažen. |
BringIntoView() |
Pokusí se přenést tento prvek do zobrazení v rámci všech posouvatelných oblastí, ve kterých je obsažen. |
BringIntoView(Rect)
Pokusí se zobrazit zadanou velikost oblasti tohoto prvku v rámci všech posouvatelných oblastí, ve kterých je obsažen.
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
Zadaná velikost prvku, který by měl být také uveden do zobrazení.
Příklady
Následující příklad obsahuje velkou grafiku v omezené oblasti posouvání. Tlačítko na stránce má obslužnou rutinu, která posouvá zobrazení do konkrétní oblasti velké grafiky.
<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
Poznámky
Voláním této metody vyvoláte RequestBringIntoView událost, která pochází z aktuálního prvku. Tato událost je vyvolána tak, aby ji bylo možné zpracovat ScrollViewerpomocí třídy , nebo odvozené nebo podobné třídy. Očekávané chování je, že událost je zpracována nadřazeným elementem, označena v datech události a zdroj události je uveden do zobrazení prostřednictvím logiky vložené v ovládacím ScrollViewer prvku. RequestBringIntoView Událost ani BringIntoView metoda nepřenášejí žádné informace o úspěchu nebo selhání kromě toho, že událost je obvykle označena jako zpracována při úspěchu. Mezi důvody selhání může patřit nastavení elementu, například Visibility jiná hodnota než Visible.
Pokud použijete podpis, který neurčil targetRectangle
, zobrazí se celá velikost elementu (jeho RenderSize).
Voláním této metody budete potenciálně volat MakeVisible v jakékoli nadřazené posouvatelné oblasti, která obsahuje prvek. Pokud tento prvek není obsažen v posouvatelné oblasti, RequestBringIntoView událost je stále vyvolána, ale nebude mít žádný vliv, protože neexistují žádné naslouchací procesy událostí.
Viz také
Platí pro
BringIntoView()
Pokusí se přenést tento prvek do zobrazení v rámci všech posouvatelných oblastí, ve kterých je obsažen.
public:
void BringIntoView();
public void BringIntoView ();
member this.BringIntoView : unit -> unit
Public Sub BringIntoView ()
Příklady
Následující příklad implementuje obslužnou rutinu pro událost navigace aplikace, která reaguje vždy, když identifikátor URI (Uniform Resource Identifier) bude obsahovat fragment. Fragment je v identifikátoru URI pojmenovaný za znaménkem hash (#) a implementované chování způsobí, že se prvek posune do zobrazení v rámci rámce. BringIntoView a RequestBringIntoView vyžádejte si toto chování při posouvání v příkladu.
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
Poznámky
Voláním této metody vyvoláte RequestBringIntoView událost, která pochází z aktuálního prvku. Tato událost je vyvolána tak, aby ji bylo možné zpracovat ScrollViewerpomocí třídy , nebo odvozené nebo podobné třídy. Očekávané chování je, že událost je zpracována nadřazeným elementem, označena v datech události a zdroj události je uveden do zobrazení prostřednictvím logiky vložené v ovládacím ScrollViewer prvku. RequestBringIntoView Událost ani BringIntoView metoda nepřenášejí žádné informace o úspěchu nebo selhání kromě toho, že událost je obvykle označena jako zpracována při úspěchu. Mezi důvody selhání může patřit nastavení elementu, například Visibility jiná hodnota než Visible.
Pokud použijete podpis, který neurčil targetRectangle
, zobrazí se celá velikost elementu (jeho RenderSize).
Voláním této metody budete potenciálně volat MakeVisible v jakékoli nadřazené posouvatelné oblasti, která obsahuje prvek. Pokud tento prvek není obsažen v posouvatelné oblasti, RequestBringIntoView událost je stále vyvolána, ale nebude mít žádný vliv, protože neexistují žádné naslouchací procesy událostí.