Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A felhasználói felületen belüli tartalom gyakran nagyobb, mint a számítógép képernyőjének megjelenítési területe. A ScrollViewer vezérlő kényelmes módot kínál a tartalom görgetésére a Windows Presentation Foundation (WPF) alkalmazásokban. Ez a témakör bemutatja a ScrollViewer elemet, és számos használati példát tartalmaz.
A ScrollViewer vezérlő
Két előre definiált elem teszi lehetővé a görgetést a WPF-alkalmazásokban: ScrollBar és ScrollViewer. A ScrollViewer vezérlő vízszintes és függőleges ScrollBar elemeket és egy tartalomtárolót (például egy Panel elemet) foglal magában, hogy más látható elemeket jelenítsen meg egy görgethető területen. Egyéni objektumot kell létrehoznia ahhoz, hogy a ScrollBar elemet használhassa a tartalom görgetéséhez. A ScrollViewer elemet azonban önmagában is használhatja, mivel ez egy összetett vezérlő, amely ScrollBar funkciókat foglal magában.
A ScrollViewer vezérlő az egér- és a billentyűzetparancsokra is reagál, és számos módszert határoz meg, amelyekkel előre meghatározott lépésekben görgetheti a tartalmat. Az ScrollChanged esemény használatával észlelheti a ScrollViewer állapotában bekövetkező változásokat.
Egy ScrollViewer csak egy gyermeke lehet, általában egy Panel elem, amely Children elemgyűjteményt tartalmazhat. A Content tulajdonság határozza meg a ScrollVieweregyetlen gyermekét.
Fizikai és logikai görgetés
A fizikai görgetéssel előre meghatározott fizikai növekményekkel görgetheti a tartalmakat, általában képpontban deklarált érték alapján. A logikai görgetéssel a logikai fa következő eleméhez görgethet. A fizikai görgetés a legtöbb Panel elem alapértelmezett görgetési viselkedése. A WPF mindkét görgetési típust támogatja.
Az IScrollInfo felület
A IScrollInfo felület egy ScrollViewer vagy származtatott vezérlőelem fő görgetési régióját jelöli. Az interfész olyan görgetési tulajdonságokat és metódusokat határoz meg, amelyeket Panel olyan elemekkel lehet implementálni, amelyek logikai egységenként, nem pedig fizikai növekményes görgetést igényelnek. Egy IScrollInfo példányát átkonvertálva (type casting) egy származtatott Panel típusra, majd az abból származó görgetési metódusok alkalmazásával, hasznos módja lehet a gyermekkollekció következő logikai egységéhez való görgetésnek, ahelyett hogy képpontonként görgetnénk. Alapértelmezés szerint a ScrollViewer vezérlő támogatja a fizikai egységek szerinti görgetést.
StackPanel és VirtualizingStackPanel egyaránt implementálja a IScrollInfo és natív módon támogatja a logikai görgetést. A logikai görgetést natív módon támogató elrendezésvezérlők esetében a fizikai görgetést úgy érheti el, hogy a gazdagép Panel elemet egy ScrollViewer-be teszi, és a CanContentScroll tulajdonságot falseértékre állítja.
Az alábbi kódpélda bemutatja, hogyan lehet egy IScrollInfo példányt StackPanel típusúra konvertálni, és használni az interfész által meghatározott tartalomgörgető módszereket (LineUp és LineDown).
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
ScrollViewer-elem definiálása és használata
Az alábbi példa egy ScrollViewer hoz létre egy olyan ablakban, amely szöveget és téglalapot tartalmaz. ScrollBar elemek csak akkor jelennek meg, ha szükség van rájuk. Az ablak átméretezésekor a ScrollBar elemek megjelennek és eltűnnek a ComputedHorizontalScrollBarVisibility és ComputedVerticalScrollBarVisibility tulajdonságainak frissített értékei miatt.
// 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>
A ScrollViewer stílusának kialakítása
A Windows Presentation Foundation összes vezérlőeleméhez hasonlóan a ScrollViewer is stílust adhat a vezérlő alapértelmezett megjelenítési viselkedésének módosításához. További információk a vezérlők stílusáról a Stílus és sablonozásrészben találhatók.
Dokumentumok lapozása
A dokumentumtartalmak esetében a görgetés alternatíva egy olyan dokumentumtároló kiválasztása, amely támogatja a lapozást. FlowDocument olyan dokumentumokhoz készült, amelyek megtekintési vezérlőn belül üzemeltethetők, például FlowDocumentPageViewer, amely támogatja a többoldalas tartalom lapozását, így nem szükséges görgetni. DocumentViewer megoldást kínál FixedDocument tartalom megtekintésére, amely hagyományos görgetéssel jeleníti meg a megjelenítési területen kívüli tartalmakat.
További információ a dokumentumformátumokról és a bemutató beállításairól: Dokumentumok a WPF.
Lásd még
.NET Desktop feedback