This article has been localized into Portuguese by the community.
O controle FlowDocumentReader
O FlowDocumentReader é definitivamente o wrapper de leitura mais avançado que você pode colocar em torno de um FlowDocument. Ele oferece botões que permitem que o usuário final alterne entre os modos de renderização oferecidos pelo FlowDocumentScrollViewer e pelo FlowDocumentPageViewer, bem como pela pesquisa de documentos pronta para uso e, claro, pelos controles de zoom in e out.
Toda essa funcionalidade também torna o FlowDocumentReader o mais pesado dos três invólucros somente leitura, mas isso dificilmente seria um problema com os documentos de tamanho mais regular. Aqui está um exemplo de como o FlowDocumentReader pode ser:
Essa captura de tela é feita na visualização baseada em página, que é o padrão. Você pode alternar entre os modos de exibição usando os botões à esquerda dos controles de zoom. Na parte esquerda da barra de ferramentas, você tem os controles para pesquisar no documento, como fiz aqui na captura de tela.
Aqui está o código que lhe dará o resultado acima:
<Window x:Class="WpfTutorialSamples.Rich_text_controls.FlowDocumentReaderSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="FlowDocumentReaderSample" Height="250" Width="550">
<Grid>
<FlowDocumentReader>
<FlowDocument>
<Paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce faucibus odio arcu, luctus vestibulum tortor congue in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec lacinia neque. Donec malesuada, ligula non vestibulum cursus, urna purus pellentesque orci, aliquet accumsan dui velit ac justo. Phasellus sagittis ligula in leo dapibus, vel vestibulum felis mattis. Fusce vitae auctor nibh. Ut sit amet fringilla turpis. Aenean tincidunt feugiat sapien, quis scelerisque enim pretium commodo. Mauris fermentum posuere nulla, vitae fermentum quam malesuada in. Cras ultrices bibendum nulla eu mollis. Sed accumsan pretium magna, non sodales velit viverra id. Sed eu elit sit amet sem ullamcorper rhoncus.</Paragraph>
<Paragraph>Nulla vitae suscipit tellus. Nunc sit amet tortor fermentum, sollicitudin enim cursus, sagittis lacus. Pellentesque tincidunt massa nisl, nec tempor nulla consequat a. Proin pharetra neque vel dolor congue, at condimentum arcu varius. Sed vel luctus enim. Curabitur eleifend dui et arcu faucibus, sit amet vulputate libero suscipit. Vestibulum ultrices nisi id metus ultrices, eu ultricies ligula rutrum. Phasellus rhoncus aliquam pretium. Quisque in nunc erat. Etiam mollis turpis cursus, sagittis felis vel, dignissim risus. Ut at est nec tellus lobortis venenatis. Fusce elit mi, gravida sed tortor at, faucibus interdum felis. Phasellus porttitor dolor in nunc pellentesque, eu hendrerit nulla porta. Vestibulum cursus placerat elit. Nullam malesuada dictum venenatis. Interdum et malesuada fames ac ante ipsum primis in faucibus.</Paragraph>
</FlowDocument>
</FlowDocumentReader>
</Grid>
</Window>
Essa marcação resultará em uma janela, conforme visto na captura de tela acima. Aqui está uma captura de tela em que entramos no modo de duas páginas e reduzimos o zoom um pouco:
O FlowDocumentReader tem um intervalo de propriedades que podem ajudá-lo a controlar como ele funciona. Aqui está uma lista incompleta de alguns dos mais importantes:
ViewingMode - controla o modo de visualização inicial. O padrão é Página, mas você pode alterá-lo para Scroll ou TwoPage, se desejar outra visualização padrão. Isso ainda pode ser alterado pelo usuário, a menos que seja especificamente desativado.
IsFindEnabled - oferece a capacidade de desativar a pesquisa no documento. Se desativado, o botão de pesquisa será removido da barra de ferramentas.
IsTwoPageViewEnabled, IsPageViewEnabled e IsScrollViewEnabled - permite que você desative um modo de visualização específico para o leitor. Quando definido como falso, esse modo não está mais disponível para o leitor e o botão é removido da barra de ferramentas.
Zoom - permite definir o nível de zoom padrão. O padrão é 100%, mas você pode alterar isso usando a propriedade Zoom.
Resumo
Nós já passamos por todas as opções para um wrapper FlowDocument de somente leitura, e como você provavelmente pode ver, qual escolher realmente depende da tarefa em mãos.
Se você quer apenas renderização simples do FlowDocument com uma barra de rolagem, você deve ir com o FlowDocumentScrollViewer - é simples e consome menos espaço e recursos dos três. Se você deseja uma visualização paginada, vá com o FlowDocumentPageViewer, a menos que queira que o usuário possa alternar entre os modos e poder pesquisar rapidamente, caso em que você deve usar o FlowDocumentReader.