Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Innehållet i ett användargränssnitt är ofta större än en datorskärms visningsområde. Den ScrollViewer kontrollen är ett bekvämt sätt att aktivera rullning av innehåll i WPF-program (Windows Presentation Foundation). Det här avsnittet introducerar elementet ScrollViewer och innehåller flera användningsexempel.
ScrollViewer-kontrollen
Det finns två fördefinierade element som möjliggör rullning i WPF-program: ScrollBar och ScrollViewer. Den ScrollViewer kontrollen kapslar in vågräta och lodräta ScrollBar element och en innehållscontainer (till exempel ett Panel-element) för att visa andra synliga element i ett rullningsbart område. Du måste skapa ett anpassat objekt för att kunna använda elementet ScrollBar för innehållsrullning. Du kan dock använda ScrollViewer-elementet på egen hand eftersom det är en sammansatt kontroll som kapslar in ScrollBar funktioner.
Den ScrollViewer kontrollen svarar på både mus- och tangentbordskommandon och definierar flera metoder för att rulla innehåll efter förutbestämda steg. Du kan använda händelsen ScrollChanged för att identifiera en ändring i ett ScrollViewer tillstånd.
En ScrollViewer kan bara ha ett underordnat element, vanligtvis ett Panel-element som kan innehålla en samling av Children-element. Egenskapen Content definierar den enda underordnade noden i ScrollViewer.
Fysisk kontra logisk rullning
Fysisk rullning används för att rulla innehåll genom en fördefinierad fysisk ökning, vanligtvis av ett värde som deklareras i bildpunkter. Logisk rullning används för att rulla till nästa objekt i det logiska trädet. Fysisk rullning är standardbeteendet för rullning för de flesta Panel element. WPF stöder båda typerna av rullning.
IScrollInfo-gränssnittet
Gränssnittet IScrollInfo representerar den huvudsakliga rullningsregionen inom en ScrollViewer eller härledd kontroll. Gränssnittet definierar rullningsfunktioner och metoder som kan implementeras av Panel-element som kräver rullning med logiska enheter i stället för fysiska increment. Om du gjuter en instans av IScrollInfo till en härledd Panel och sedan använder dess rullningsmetoder kan du bläddra till nästa logiska enhet i en underordnad samling i stället för genom pixelökning. Som standard stöder ScrollViewer-kontrollen rullning efter fysiska enheter.
StackPanel och VirtualizingStackPanel båda implementerar IScrollInfo och har inbyggt stöd för logisk rullning. För layoutkontroller som inbyggt stödjer logisk rullning kan du fortfarande åstadkomma fysisk rullning genom att omge värdens Panel-element med en ScrollViewer och ställa in egenskapen CanContentScroll till false.
I följande kodexempel visas hur du omvandlar en instans av IScrollInfo till en StackPanel och använder rullningsmetoder för innehåll (LineUp och LineDown) som definieras av gränssnittet.
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
Definiera och använda ett ScrollViewer-element
I följande exempel skapas en ScrollViewer i ett fönster som innehåller text och en rektangel. ScrollBar element visas bara när de är nödvändiga. När du ändrar storlek på fönstret visas och försvinner de ScrollBar elementen på grund av uppdaterade värden för egenskaperna ComputedHorizontalScrollBarVisibility och ComputedVerticalScrollBarVisibility.
// 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>
Formatera en ScrollViewer
Precis som alla kontroller i Windows Presentation Foundation kan ScrollViewer utformas för att ändra standardåtergivningsbeteendet för kontrollen. Mer information om kontrollformatering finns i Styling och Templating.
Paginering av dokument
För dokumentinnehåll är ett alternativ till rullning att välja en dokumentcontainer som stöder sidnumrering. FlowDocument är för dokument som är utformade för att hanteras i en visningskontroll, till exempel FlowDocumentPageViewer, som stöder sidnumrering av innehåll på flera sidor, vilket förhindrar behovet av rullning. DocumentViewer tillhandahåller en lösning för att visa FixedDocument innehåll, som använder traditionell rullning för att visa innehåll utanför visningsområdets område.
Mer information om dokumentformat och presentationsalternativ finns i Dokument i WPF.
Se även
.NET Desktop feedback