Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Visão geral de ScrollViewer

 

Publicado: junho de 2016

Conteúdo em uma interface do usuário geralmente é maior do que a área de exibição de uma tela de computador. O ScrollViewer controle fornece uma maneira conveniente de permitir a rolagem de conteúdo em Windows Presentation Foundation (WPF) aplicativos. Este tópico apresenta o ScrollViewer elemento e fornece vários exemplos de uso.

Este tópico contém as seguintes seções:

Há dois elementos pré-definidos que permitem rolagem em WPF aplicativos: ScrollBar e ScrollViewer. O ScrollViewer controle encapsula horizontal e vertical ScrollBar elementos e um recipiente de conteúdo (como um Panel elemento) para exibir outros elementos visíveis em uma área rolável. Você deve criar um objeto personalizado para usar o ScrollBar elemento para rolagem de conteúdo. No entanto, você pode usar o ScrollViewer elemento por si só porque ele é um controle composto que encapsula ScrollBar funcionalidade.

O ScrollViewer controle responde a comandos de mouse e teclado e define vários métodos com os quais rolar o conteúdo em incrementos pré-determinados. Você pode usar o ScrollChanged eventos para detectar uma alteração em um ScrollViewer estado.

Um ScrollViewer pode ter apenas um filho, geralmente um Panel elemento que pode hospedar uma Children coleção de elementos. O Content propriedade define o único filho do ScrollViewer.

Rolagem física é usada para rolar conteúdo por um incremento físico pré-determinado, geralmente por um valor que é declarado em pixels. Rolagem lógica é usada para rolar para o próximo item na árvore lógica. Rolagem física é o comportamento padrão de rolagem para a maioria dos Panel elementos.WPF oferece suporte a ambos os tipos de rolagem.

O IScrollInfo interface representa a área de rolagem principal em um ScrollViewer ou controle derivado. A interface define propriedades e métodos que podem ser implementados por rolagem Panel elementos que requerem a rolagem por unidade lógica, em vez de por um incremento físico. Converter uma instância de IScrollInfo para um derivado Panel e então usar seus métodos de rolagem fornece uma maneira útil de rolar para a próxima unidade lógica em uma coleção filha, e não por incremento de pixel. Por padrão, o ScrollViewer controle oferece suporte a rolagem por unidades físicas.

StackPanel e VirtualizingStackPanel implementam IScrollInfo e suporte nativo a rolagem lógica. Para controles de layout que nativamente suporte a rolagem lógica, você ainda pode obter rolagem física envolvendo o host Panel elemento em um ScrollViewer e configuração de CanContentScroll propriedade false.

O exemplo de código a seguir demonstra como converter uma instância de IScrollInfo para um StackPanel e usar métodos de rolagem de conteúdo (LineUp e LineDown) definidos pela interface.

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

O exemplo a seguir cria um ScrollViewer em uma janela que contém algum texto e um retângulo. ScrollBar os elementos aparecem somente quando são necessários. Quando você redimensiona a janela, o ScrollBar elementos aparecem e desaparecem, devido a valores atualizados da ComputedHorizontalScrollBarVisibility e ComputedVerticalScrollBarVisibility Propriedades.


// 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="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>

Como todos os controles no Windows Presentation Foundation, o ScrollViewer pode ser estilizado para alterar o comportamento de renderização padrão do controle. Para obter informações adicionais sobre estilo de controle, consulte Estilos e modelagem.

Para o conteúdo do documento, uma alternativa para rolagem é escolher um recipiente de documento que ofereça suporte à paginação. FlowDocument para documentos que são projetados para ser hospedados dentro um controle de visualização, como FlowDocumentPageViewer, que suporta paginação de conteúdo em várias páginas, evitando a necessidade de rolagem. DocumentViewer Fornece uma solução para exibição FixedDocument conteúdo, que usa rolagem tradicional para exibir o conteúdo fora do território da área de exibição.

Para obter informações adicionais sobre formatos de documento e opções de apresentação, consulte Documentos no WPF.

Mostrar: