[DEV] Como listar os arquivos do LocalFolder de sua APP e exibir em um ListBox

0

Olá pessoal, tudo bom?

Neste post demonstro uma maneira de listar os arquivos que você tem armazenado localmente em sua APP (LocalFolder) e exibi-los em um ListBox.

Em primeiro lugar, vamos definir uma classe para representar a lista dos arquivos a serem exibidos. Para o exemplo, identificaremos a classe como Arquivo.cs e nela teremos apenas a representação para o nome e data de criação dos mesmos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
...
 
namespace Exemplo
{
  public class Arquivo
  {
    //Nome do arquivo
    public string Nome { get; set; }
    //Data de criação do arquivo
    public DateTime DataCriacao { get; set; }
  }
}
 
...

O segundo passo é você mapear o LocalFolder de sua APP e nele identificar o “diretório” de onde deseja exibir a lista dos arquivos. Veja o código em C#:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
async private void ListarArquivos()
{
  try
  {
    //Mapeando o LocalFolder da APP
    StorageFolder folder = ApplicationData.Current.LocalFolder;
    //Posicionando dentro do diretório Imagens
    //Isso não é obrigatório, mas deixei como exemplo para o caso de você querer lista os arquivos de um diretório específico
    StorageFolder imgFolder = await folder.GetFolderAsync("Imagens");
    //Obtendo os arquivos do diretório
    var files = await imgFolder.GetFilesAsync();
 
    List<arquivo> arquivos = new List</arquivo><arquivo>();
 
    //Aqui varremos o objeto files para colocar os arquivos em nossa lista de Arquivos
    foreach (var f in files)
    {
      arquivos.Add(new QrCode { Nome = f.Name, DataCriacao = f.DateCreated.DateTime });
    }
 
    //Enviando a relação dos arquivos para o ListBox que irá exibi-los
    lbArquivos.ItemsSource = arquivos.OrderBy(x => x.Nome);
  }
  catch (Exception)
  {
 
  }
}
</arquivo>

No terceiro e último passo iremos definir o XAML para o ListBox que exibirá a relação dos arquivos do diretório:

1
2
3
4
5
6
7
8
9
10
11
12
13
 
...
<listbox Name="lbArquivos" VerticalAlignment="Top" Height="460" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
  </listbox><listbox .ItemTemplate>
    <datatemplate>
      <stackpanel>
        <textblock Margin="10,0,0,0" Text="{Binding Nome}" Style="{StaticResource ListViewItemTextBlockStyle}"></textblock>
        <textblock Margin="10,0,0,0" Style="{StaticResource ListViewItemContentTextBlockStyle}" Text="{Binding DataCriacao}"></textblock>
      </stackpanel>
    </datatemplate>
  </listbox>
 
...

Espero ter ajudado.

Abraços,

Eduardo Henrique Rizo (@eduardorizo)

MCP

Post Relacionado: 

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.