Übersicht über ScrollViewer

Aktualisiert: November 2007

Der Inhalt innerhalb einer Benutzeroberfläche ist oft umfangreicher als der Anzeigebereich eines Computerbildschirms. Das ScrollViewer-Steuerelement bietet eine komfortable Möglichkeit, den Bildlauf für Inhalt in Windows Presentation Foundation (WPF)-Anwendungen zu ermöglichen. In diesem Thema wird das ScrollViewer-Element eingeführt. Außerdem werden mehrere Verwendungsbeispiele bereitgestellt.

Dieses Thema enthält folgende Abschnitte:

  • Das ScrollViewer-Steuerelement

  • Physischer Bildlauf im Vergleich zu logischem Bildlauf

  • Definieren und Verwenden eines ScrollViewer-Elements

  • Formatieren eines ScrollViewer

  • Paginieren von Dokumenten

  • Verwandte Themen

Das ScrollViewer-Steuerelement

Es gibt zwei vordefinierte Elemente, die einen Bildlauf in WPF-Anwendungen ermöglichen: ScrollBar und ScrollViewer. Das ScrollViewer-Steuerelement kapselt horizontale und vertikale ScrollBar-Elemente sowie einen Inhaltscontainer (wie zum Beispiel ein Panel-Element), um andere sichtbare Elemente in einem bildlauffähigen Bereich anzuzeigen. Sie müssen ein benutzerdefiniertes Objekt erstellen, um das ScrollBar-Element für den Bildlauf durch Inhalte zu verwenden. Sie können jedoch das ScrollViewer-Element allein verwenden, da es sich um ein zusammengesetztes Steuerelement handelt, das ScrollBar-Funktionalitäten kapselt.

Das ScrollViewer-Steuerelement reagiert auf Maus- und Tastaturbefehle und definiert zahlreiche Methoden, mit denen ein Bildlauf von Inhalten anhand vordefinierter Schritte durchgeführt werden kann. Sie können das ScrollChanged-Ereignis verwenden, um eine Änderung eines ScrollViewer-Zustands zu erkennen.

Ein ScrollViewer kann lediglich über ein untergeordnetes Element verfügen, üblicherweise ein Panel-Element, das eine Children-Auflistung von UIElements aufnehmen kann. Die Content-Eigenschaft definiert das einzige untergeordnete Element von ScrollViewer.

Physischer Bildlauf im Vergleich zu logischem Bildlauf

Ein physischer Bildlauf wird verwendet, um Inhalte mit einer vordefinierten physischen Schrittweite zu bewegen, typischerweise durch einen in Pixel festgelegten Wert. Ein logischer Bildlauf wird verwendet, um zum nächsten Element in der logischen Struktur zu gelangen. Der physische Bildlauf ist das Standardbildlaufverhalten für die meisten Panel-Elemente. WPF unterstützt beide Bildlaufarten.

Die IScrollInfo-Schnittstelle

Die IScrollInfo-Schnittstelle stellt den Hauptbildlaufbereich innerhalb eines ScrollViewer-Steuerelements oder eines abgeleiteten Steuerelements dar. Die Schnittstelle definiert Eigenschaften und Methoden für den Bildlauf, die von Panel -Elementen implementiert werden können, die eher einen Bildlauf auf Basis logischer Einheiten statt physischer Schrittweiten erfordern. Das Umwandeln einer Instanz von IScrollInfo zu einem abgeleiteten Panel und die anschließende Verwendung der zugehörigen Bildlaufmethoden bieten eine praktische Möglichkeit, um einen Bildlauf zur nächsten logischen Einheit in einer untergeordneten Auflistung durchzuführen. Dieses Vorgehen ist besser als die Verwendung von Pixelschritten. Standardmäßig unterstützt das ScrollViewer-Steuerelement den Bildlauf auf Basis physischer Einheiten.

StackPanel und VirtualizingStackPanel implementieren beide IScrollInfo und unterstützen direkt einen logischen Bildlauf. Für Layoutsteuerelemente, die einen logischen Bildlauf direkt unterstützen, können Sie dennoch einen physischen Bildlauf erreichen, indem Sie das Panel-Hostelement mit einem ScrollViewer-Element umschließen und die CanContentScroll-Eigenschaft auf false festlegen.

Das folgende Codebeispiel zeigt das Umwandeln einer Instanz von IScrollInfo in ein StackPanel und die Verwendung der von der Schnittstelle definierten Bildlaufmethoden (LineUp und LineDown) für den Inhalt.

Private Sub spLineUp(ByVal sender As Object, ByVal args As RoutedEventArgs)

    CType(sp1, IScrollInfo).LineUp()
End Sub
Private Sub spLineDown(ByVal sender As Object, ByVal args As RoutedEventArgs)

    CType(sp1, IScrollInfo).LineDown()
End Sub
private void spLineUp(object sender, RoutedEventArgs e)
{
    ((IScrollInfo)sp1).LineUp();
}
private void spLineDown(object sender, RoutedEventArgs e)
{
    ((IScrollInfo)sp1).LineDown();
}

Definieren und Verwenden eines ScrollViewer-Elements

Im folgenden Beispiel wird ein ScrollViewer-Element in einem Fenster erstellt, das etwas Text und ein Rechteck enthält. ScrollBar-Elemente werden nur angezeigt, wenn sie erforderlich sind. Beim Ändern der Fenstergröße werden die ScrollBar-Elemente ein- oder ausgeblendet, abhängig von den aktualisierten Werten der Eigenschaften ComputedHorizontalScrollBarVisibility und ComputedVerticalScrollBarVisibility.

Tipp

Das vollständige Codebeispiel finden Sie unter Beispiel zu ScrollViewer.

'Define a ScrollViewer.
Dim myScrollViewer As New ScrollViewer
myScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto

'Add Layout control.
Dim myStackPanel As New StackPanel
myStackPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left
myStackPanel.VerticalAlignment = System.Windows.VerticalAlignment.Top

Dim myTextBlock As New TextBlock
myTextBlock.TextWrapping = TextWrapping.Wrap
myTextBlock.Margin = New Thickness(0, 0, 0, 20)
myTextBlock.Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller."

Dim myRectangle As New Rectangle
myRectangle.Fill = Brushes.Red
myRectangle.Width = 500
myRectangle.Height = 500

'Add child elements to the parent StackPanel.
myStackPanel.Children.Add(myTextBlock)
myStackPanel.Children.Add(myRectangle)

'Add the StackPanel as the lone Child of the Border
myScrollViewer.Content = myStackPanel
Me.Content = myScrollViewer
// Create the application's main window
mainWindow = new Window ();
mainWindow.Title = "ScrollViewer Sample";

// Define a ScrollViewer
myScrollViewer = new ScrollViewer();
myScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;

// Add Layout control
myStackPanel = new StackPanel();
myStackPanel.HorizontalAlignment = HorizontalAlignment.Left;
myStackPanel.VerticalAlignment = VerticalAlignment.Top;

TextBlock myTextBlock = new TextBlock();
myTextBlock.TextWrapping = TextWrapping.Wrap;
myTextBlock.Margin = new Thickness(0, 0, 0, 20);
myTextBlock.Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller.";

Rectangle myRectangle = new Rectangle();
myRectangle.Fill = Brushes.Red;
myRectangle.Width = 500;
myRectangle.Height = 500;

// Add child elements to the parent StackPanel
myStackPanel.Children.Add(myTextBlock);
myStackPanel.Children.Add(myRectangle);

// Add the StackPanel as the lone Child of the Border
myScrollViewer.Content = myStackPanel;

// Add the Border as the Content of the Parent Window Object
mainWindow.Content = myScrollViewer;
mainWindow.Show ();

<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
      WindowTitle="ScrollViewer Sample">
  <ScrollViewer HorizontalScrollBarVisibility="Auto">
    <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
      <TextBlock TextWrapping="Wrap" Margin="0,0,0,20">Scrolling is enabled when it is necessary. 
      Resize the window, making it larger and smaller.</TextBlock>
      <Rectangle Fill="Red" Width="500" Height="500"></Rectangle>
    </StackPanel>
  </ScrollViewer>
</Page>

Formatieren eines ScrollViewer

Wie alle Steuerelemente in Windows Presentation Foundation kann ScrollViewer formatiert werden, um das Standardrenderverhalten des Steuerelements zu ändern. Ein Beispiel eines benutzerdefiniert formatierten ScrollViewer finden Sie unter ScrollViewer-Stilbeispiel. Weitere Informationen zum Formatieren von Steuerelementen finden Sie unter Erstellen von Formaten und Vorlagen.

Paginieren von Dokumenten

Für Dokumenteninhalte kann als Alternative zum Bildlauf ein Dokumentcontainer ausgewählt werden, der Paginierung unterstützt. Bei FlowDocuments handelt es sich um Dokumente, die innerhalb eines Anzeigesteuerelements, wie zum Beispiel FlowDocumentPageViewer gehostet werden sollen, das die Paginierung von Inhalten über mehrere Seiten unterstützt und einen Bildlauf überflüssig macht. DocumentViewer bietet eine Lösung zum Anzeigen von FixedDocument-Inhalten, die einen herkömmlichen Bildlauf zum Anzeigen von Inhalten außerhalb des Anzeigebereichs verwenden.

Weitere Informationen über Dokumentformate und Präsentationsoptionen finden Sie unter Dokumente in Windows Presentation Foundation.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines ScrollViewer

ScrollViewer-Stilbeispiel

Konzepte

Dokumente in Windows Presentation Foundation

Beispiel von ScrollBar-ControlTemplate

Optimieren der Leistung: Steuerelemente

Referenz

ScrollViewer

ScrollBar

IScrollInfo