Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Inhalte innerhalb einer Benutzeroberfläche sind häufig größer als der Anzeigebereich eines Computerbildschirms. Das ScrollViewer Steuerelement bietet eine komfortable Möglichkeit, in Windows Presentation Foundation (WPF)-Anwendungen das Scrollen von Inhalten zu aktivieren. In diesem Thema wird das ScrollViewer Element vorgestellt und mehrere Verwendungsbeispiele bereitgestellt.
ScrollViewer-Steuerelement
Es gibt zwei vordefinierte Elemente, die das Scrollen in WPF-Anwendungen ermöglichen: ScrollBar und ScrollViewer. Das ScrollViewer Steuerelement kapselt horizontale und vertikale ScrollBar Elemente und einen Inhaltscontainer (z. B. ein Panel Element), um andere sichtbare Elemente in einem bildlauffähigen Bereich anzuzeigen. Sie müssen ein benutzerdefiniertes Objekt erstellen, um das ScrollBar Element zum Scrollen von Inhalten zu verwenden. Sie können das ScrollViewer Element jedoch allein verwenden, da es sich um ein zusammengesetztes Steuerelement handelt, das die Funktionalität des ScrollBar kapselt.
Das ScrollViewer Steuerelement reagiert sowohl auf Maus- als auch Tastaturbefehle und definiert zahlreiche Methoden zum Scrollen von Inhalten durch vorbestimmte Inkremente. Sie können das ScrollChanged Ereignis verwenden, um eine Änderung in einem ScrollViewer Zustand zu erkennen.
Ein ScrollViewer kann nur ein Kind haben, in der Regel ein Panel-Element, das eine Children-Sammlung von Elementen hosten kann. Die Content Eigenschaft definiert das einzige untergeordnete Element der ScrollViewer.
Physikalischer Bildlauf im Vergleich zu logischem Bildlauf
Physisches Scrollen wird verwendet, um Inhalte durch einen vordefinierten physischen Inkrement zu scrollen, in der Regel durch einen Wert, der in Pixel deklariert wird. Logisches Scrollen wird verwendet, um zum nächsten Element in der logischen Struktur zu scrollen. Physisches Scrollen ist das Standardverhalten des Bildlaufs für die meisten Panel Elemente. WPF unterstützt beide Arten des Bildlaufs.
Die IScrollInfo-Schnittstelle
Die IScrollInfo Schnittstelle repräsentiert den Hauptscrollbereich in einem ScrollViewer oder dazugehörigen Steuerelement. Die Schnittstelle definiert Bildlaufeigenschaften und -methoden, die von Panel Elementen implementiert werden können, die einen Bildlauf nach logischer Einheit erfordern, und nicht durch einen physischen Inkrement. Das Umwandeln einer Instanz von IScrollInfo in eine abgeleitete Panel und die anschließende Verwendung der Bildlaufmethoden bietet eine nützliche Möglichkeit, zur nächsten logischen Einheit in einer untergeordneten Auflistung zu scrollen, anstatt durch Pixelinkrementierung. Standardmäßig unterstützt das Steuerelement den ScrollViewer Bildlauf nach physischen Einheiten.
StackPanel und VirtualizingStackPanel implementieren beide IScrollInfo und unterstützen nativ logisches Scrollen. Für Layoutsteuerelemente, die logisches Scrollen nativ unterstützen, können Sie dennoch einen physischen Bildlauf erzielen, indem Sie das Hostelement Panel in eine ScrollViewer umschließen und die CanContentScroll Eigenschaft auf false
festlegen.
Im folgenden Codebeispiel wird veranschaulicht, wie Sie eine Instanz von IScrollInfo in eine StackPanel umwandeln und die von der Schnittstelle definierten Methoden zum Scrollen von Inhalten (LineUp und LineDown) verwenden können.
private void spLineUp(object sender, RoutedEventArgs e)
{
((IScrollInfo)sp1).LineUp();
}
private void spLineDown(object sender, RoutedEventArgs e)
{
((IScrollInfo)sp1).LineDown();
}
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
Definieren und Verwenden eines ScrollViewer-Elements
Im folgenden Beispiel wird ein ScrollViewer in einem Fenster erstellt, das Text und ein Rechteck enthält. ScrollBar Elemente werden nur angezeigt, wenn sie erforderlich sind. Wenn Sie die Größe des Fensters ändern, erscheinen und verschwinden die ScrollBar Elemente aufgrund der aktualisierten Werte der ComputedHorizontalScrollBarVisibility und ComputedVerticalScrollBarVisibility Eigenschaften.
// Create the application's main window
mainWindow = gcnew System::Windows::Window();
mainWindow->Title = "ScrollViewer Sample";
// Define a ScrollViewer
myScrollViewer = gcnew ScrollViewer();
myScrollViewer->HorizontalScrollBarVisibility = ScrollBarVisibility::Auto;
// Add Layout control
myStackPanel = gcnew StackPanel();
myStackPanel->HorizontalAlignment = HorizontalAlignment::Left;
myStackPanel->VerticalAlignment = VerticalAlignment::Top;
TextBlock^ myTextBlock = gcnew TextBlock();
myTextBlock->TextWrapping = TextWrapping::Wrap;
myTextBlock->Margin = System::Windows::Thickness(0, 0, 0, 20);
myTextBlock->Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller.";
Rectangle^ myRectangle = gcnew 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 ScrollViewer
myScrollViewer->Content = myStackPanel;
// Add the ScrollViewer as the Content of the parent Window object
mainWindow->Content = myScrollViewer;
mainWindow->Show();
// 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 ScrollViewer
myScrollViewer.Content = myStackPanel;
// Add the ScrollViewer as the Content of the parent Window object
mainWindow.Content = myScrollViewer;
mainWindow.Show ();
'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 ScrollViewer
myScrollViewer.Content = myStackPanel
'Add the ScrollViewer as the Content of the parent Window object
Me.Content = myScrollViewer
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://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 der Windows Presentation Foundation kann das ScrollViewer gestaltet werden, um das Standardrenderingverhalten des Steuerelements zu ändern. Weitere Informationen zum Formatieren von Steuerelementen finden Sie unter "Formatieren und Vorlagen".
Paginierung von Dokumenten
Bei Dokumentinhalten besteht eine Alternative zum Scrollen darin, einen Dokumentcontainer auszuwählen, der die Paginierung unterstützt. FlowDocument ist für Dokumente gedacht, die in einem Anzeigesteuerelement gehostet werden sollen, wie z. B. FlowDocumentPageViewer, das die Paginierung von Inhalten über mehrere Seiten hinweg unterstützt, sodass kein Bildlauf erforderlich ist. DocumentViewer bietet eine Lösung zum Anzeigen von FixedDocument-Inhalten, die herkömmliches Scrollen verwendet, um Inhalte außerhalb des Anzeigebereichs darzustellen.
Weitere Informationen zu Dokumentformaten und Präsentationsoptionen finden Sie unter "Dokumente in WPF".
Siehe auch
.NET Desktop feedback