Condividi tramite


Cenni preliminari sull'elemento ScrollViewer

Aggiornamento: novembre 2007

Il contenuto all'interno di un'interfaccia utente è spesso di dimensioni maggiori dell'area di visualizzazione dello schermo di un computer. Il controllo ScrollViewer consente di attivare lo scorrimento del contenuto nelle applicazioni Windows Presentation Foundation (WPF). In questo argomento vengono forniti cenni preliminari sul controllo ScrollViewer e diversi esempio di utilizzo.

Di seguito sono elencate le diverse sezioni di questo argomento:

  • Controllo ScrollViewer

  • Differenze tra scorrimento fisico e logico

  • Definizione e utilizzo dell'elemento ScrollViewer

  • Applicazione di uno stile a un elemento ScrollViewer

  • Paginazione di documenti

  • Argomenti correlati

Controllo ScrollViewer

Due elementi predefiniti consentono lo scorrimento nelle applicazioni WPF: ScrollBar e ScrollViewer. Il controllo ScrollViewer incapsula gli elementi ScrollBar orizzontale e verticale e un contenitore di contenuto (ad esempio un elemento Panel) per visualizzare gli altri elementi visibili in un'area scorrevole. È necessario compilare un oggetto personalizzato per utilizzare l'elemento ScrollBar per lo scorrimento di contenuto. Tuttavia, è possibile utilizzare da solo l'elemento ScrollViewer perché è un controllo composito che incapsula la funzionalità ScrollBar.

Il controllo ScrollViewer risponde a comandi del mouse e della tastiera, oltre a definire numerosi metodi con cui scorrere il contenuto in base a incrementi predeterminati. È possibile utilizzare l'evento ScrollChanged per rilevare una modifica nello stato di un controllo ScrollViewer.

Un controllo ScrollViewer può includere un unico elemento figlio, solitamente un elemento Panel che può contenere un insieme Children di UIElement. La proprietà Content definisce l'unico elemento figlio del controllo ScrollViewer.

Differenze tra scorrimento fisico e logico

Lo scorrimento fisico viene utilizzato per scorrere il contenuto in base a un incremento fisico predeterminato, in genere un valore dichiarato in pixel. Lo spostamento logico viene utilizzato per scorrere fino all'elemento successivo nella struttura ad albero logica. Lo scorrimento fisico rappresenta il comportamento predefinito per la maggior parte degli elementi Panel. WPF supporta entrambi i tipi di scorrimento.

Interfaccia IScrollInfo

L'interfaccia IScrollInfo rappresenta l'area di scorrimento principale all'interno di un controllo ScrollViewer o di un controllo derivato. L'interfaccia definisce le proprietà e i metodi di scorrimento che possono essere implementati dagli elementi Panel che richiedono lo scorrimento in base a un'unità logica, anziché a un incremento fisico. Il cast di un'istanza di IScrollInfo in un controllo Panel derivato e quindi l'utilizzo dei relativi metodi di scorrimento consentono di scorrere fino all'unità logica successiva in un insieme figlio, anziché in base a un incremento in pixel. Per impostazione predefinita, il controllo ScrollViewer supporta lo scorrimento in base a unità fisiche.

I controlli StackPanel e VirtualizingStackPanel implementano IScrollInfo e supportano a livello nativo lo scorrimento logico. Per i controlli del layout che supportano a livello nativo lo scorrimento logico, è comunque possibile ottenere lo scorrimento fisico eseguendo il wrapping dell'elemento Panel host in un controllo ScrollViewer e impostando la proprietà CanContentScroll su false.

Nell'esempio di codice seguente viene illustrato come eseguire il cast di un'istanza di IScrollInfo in un controllo StackPanel e come utilizzare i metodi di scorrimento del contenuto (LineUp e LineDown) definiti dall'interfaccia.

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();
}

Definizione e utilizzo dell'elemento ScrollViewer

Nell'esempio seguente viene creato un elemento ScrollViewer in una finestra che contiene testo e un rettangolo. Gli elementi ScrollBar vengono visualizzati solo quando sono necessari. Quando si ridimensiona la finestra, gli elementi ScrollBar vengono visualizzati e nascosti a causa dei valori aggiornati delle proprietà ComputedHorizontalScrollBarVisibility e ComputedVerticalScrollBarVisibility.

Nota

Per l'esempio di codice completo, vedere Esempio 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>

Applicazione di uno stile a un elemento ScrollViewer

Come per tutti i controlli di Windows Presentation Foundation, è possibile applicare uno stile all'elemento ScrollViewer in modo da modificarne il comportamento di rendering predefinito. Per un esempio di un elemento ScrollViewer con uno stile personalizzato, vedere Esempio di stile ScrollViewer. Per ulteriori informazioni sull'applicazione di stili ai controlli, vedere Applicazione di stili e modelli.

Paginazione di documenti

Per il contenuto di un documento, in alternativa allo scorrimento è possibile scegliere un contenitore di documenti che supporta la paginazione. Gli oggetti FlowDocument sono documenti progettati per essere contenuti all'interno di un controllo di visualizzazione, ad esempio FlowDocumentPageViewer, che supporta la paginazione di contenuto in più pagine, evitando la necessità dello scorrimento. L'oggetto DocumentViewer fornisce una soluzione per la visualizzazione di contenuto FixedDocument, che utilizza il tradizionale scorrimento per visualizzare contenuto all'esterno dell'area di visualizzazione.

Per ulteriori informazioni sui formati di documento e le opzioni di presentazione, vedere Documenti di Windows Presentation Foundation.

Vedere anche

Attività

Procedura: creare un elemento ScrollViewer

Esempio di stile ScrollViewer

Concetti

Documenti di Windows Presentation Foundation

Esempio di ControlTemplate del controllo ScrollBar

Ottimizzazione delle prestazioni: controlli

Riferimenti

ScrollViewer

ScrollBar

IScrollInfo