WPF - Exibindo um arquivo texto no FlowDocumentReader


A classe FlowDocumentReader fornece um controle para exibir o conteúdo de fluxo, com suporte interno para Múltiplos modos de exibição.

De forma padrão os documentos de fluxo são processados por meio do controle FlowDocumentReader, que oferece um conjunto de recursos padrão como zoom, paginação, diversos modos de exibição e um recurso de pesquisa. (Os documentos de fluxo precisam ser hospedados por algum tipo de controle capaz de exibi-los. )

O visualizador padrão para documentos de fluxo é o controle FlowDocumentReader, que é instanciado automaticamente, a menos que você utilize um controle diferente de forma explícita.

O WPF oferece três controles diferentes para a exibição de documentos de fluxo:

Visualizando documentos de Fluxo

Crie um novo projeto do tipo WPF Application no Visual Basic 2008 Express Edition com o nome carregarFlowDocument;

Defina no arquivo window1.xaml um controle TextBox , um controle Button e um controle FlowDocumentReader conforme o código exibido a seguir:

Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Exibindo um arquivo texto no FlowDocumentReader" Height="300" Width="600">
    <Canvas>
        <TextBox Height="32" HorizontalAlignment="Left" Margin="6,10,0,0" Name="FileNameTextBox" VerticalAlignment="Top" 
Width="393" />
        <Button Content="Procurar" Height="32" HorizontalAlignment="Left" Margin="405,10,0,0" Name="btnProcurar" 
VerticalAlignment="Top" Width="88" Click="button1_Click" />
        <FlowDocumentReader Name="FlowDocReader" Background="LightBlue" Canvas.Top="50" Canvas.Left="5" 
Width="560" Height="210"></FlowDocumentReader>
    </Canvas>
</Window>

A visualização na área do descritor WPF deverá ser conforme a figura abaixo:

Agora no arquivo code-behind window1.xaml.vb vamos definir o código para o evento Click do botão Procurar conforme abaixo:

Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        'cria um OpenFileDialog 
        Dim dlg As Microsoft.Win32.OpenFileDialog = New Microsoft.Win32.OpenFileDialog()
        ' Define o filtro para a extensão do arquivo 
        dlg.DefaultExt = ".txt"
        dlg.Filter = "Text documents (.txt)|*.txt"
        ' Exibe o OpenFileDialog 
        If (dlg.ShowDialog() = True) Then
            'Abre o documento
            Dim filename As String = dlg.FileName
            'obtem o nome do arquvo selecionado
            FileNameTextBox.Text = filename
            'define um objeto Paragraph e le o arquivo para as linhas do parágrafo
            Dim paragraph As Paragraph = New Paragraph()
            paragraph.Inlines.Add(System.IO.File.ReadAllText(filename))
            'exibe o documento no controle
            Dim documento As FlowDocument = New FlowDocument(paragraph)
            FlowDocReader.Document = documento
        End If
    End Sub

O código já esta comentado por isso dispensa mais detalhes.

Ao executar o projeto e selecionar um arquivo o mesmo será exibido conforme a figura abaixo:

A seguir temos alguns modos de visualização permitidos pelo controle:

1- Usando o Mode Two Page

2- Usando o Modo Scroll

3- Usando o Zoom no texto

4- Usando o recurso de busca no texto

E por enquanto é só isso. Aguarde mais artigos sobre os recursos do WPF.

Pegue o projeto completo aqui: carregarFlowDocument.zip

Eu sei é apenas WPF , mas eu gosto...

Referências:


José Carlos Macoratti