Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Visão geral de ScrollViewer

Conteúdo em uma interface do usuário é normalmente maior do que a área de exibição de uma tela de computador. O controle ScrollViewer fornece uma maneira conveniente de permitir a rolagem de conteúdo em aplicativos Windows Presentation Foundation (WPF). Este tópico apresenta o elemento ScrollViewer 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 aplicativos WPF: ScrollBar e ScrollViewer. O controle ScrollViewer encapsula elementos ScrollBar horizontais e verticais e um recipiente de conteúdo (como um elemento Panel) para exibir outros elementos visíveis em uma área de rolagem. Você deve criar um objeto personalizado para usar o elemento ScrollBar para rolagem de conteúdo. No entanto, você pode usar o elemento ScrollViewer por si só porque ele é um controle composto que encapsula funcionalidade de ScrollBar.

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

A ScrollViewer só pode ter um filho, geralmente um Panel o elemento que pode hospedar um Children coleção de elementos. A propriedade Content define o único filho de ScrollViewer.

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

ms750665.collapse_all(pt-br,VS.110).gifA interface IScrollInfo

A interface IScrollInfo representa a área de rolagem principal em um ScrollViewer ou controle derivado. A interface define propriedades e métodos de rolagem que podem ser implementados por elementos Panel que requerem a rolagem por unidade lógica, em vez de por um incremento físico. Fazer o cast de uma instância de IScrollInfo para um Panel derivado 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 controle ScrollViewer oferece suporte a rolagem por unidades físicas.

Ambos StackPanel e VirtualizingStackPanel implementam IScrollInfo e oferecem suporte nativo a rolagem lógica. Para controles de layout que oferecem suporte nativo a rolagem lógica, você ainda pode obter rolagem física fazendo o wrap do elemento Panel host em um ScrollViewer e definindo a propriedade CanContentScroll como 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 forem necessários. Quando você redimensiona a janela, os elementos ScrollBar aparecem e desaparecem, devido a valores atualizados de propriedades ComputedHorizontalScrollBarVisibility e ComputedVerticalScrollBarVisibility.



            // 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 em Windows Presentation Foundation, o ScrollViewer pode ser estilizado para alterar o comportamento de desenho padrão do controle. Para obter informações adicionais sobre estilo de controle, consulte Estilo e modelagem.

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

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

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft