Existem oito métodos principais na classe IsolatedStorageFile que os desenvolvedores utilizarão para manipular arquivos e diretórios no Windows Phone.

  • FileExists - É utilizado para verificar se um arquivo XPTO existe no Isolated Storage.
  • CreateFile – É utilizado para criar arquivos.
  • OpenFile – É usado para abrir um arquivo específico num caminho determinado.
  • DeleteFile – É responsável pela exclusão de um arquivo.
  • Remove – É utilizado para remover toda a Isolated Storage e seu conteúdo utilizados pela aplicação.
  • DirectoryExists – Este método é usado para verificar a existência de um diretório no Isolated Storage.
  • CreateDirectory – É usado para a criação de um diretório.
  • GetUserStoreForApplication – Fornece o Isolated Storage da aplicação.

Agora será feito um exemplo em que o usuário irá escolher uma imagem através do PhotoChooserTask e esta será salva no Isolated Storage.

Crie um projeto Windows Phone Application no Visual Studio 2012.

Criação do projeto para Windows Phone no Visual Studio

Figura 1: Criação do projeto para Windows Phone no Visual Studio

Ao criar o projeto é exibida uma caixa com a opção de escolha da versão do Windows Phone, escolha a 7.1, pois assim o seu aplicativo funcionará em todas as versões de Windows Phone disponíveis.

Abra o arquivo MainPage.xaml e adicione o controle Image no Content Panel conforme a listagem 1.

Listagem 1: Criação do controle Image no Content Panel


<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Image VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10,10,0,0" Name="imgExemplo" Stretch="Uniform" />
</Grid>

Adicione um ícone ao Solution Explorer clicando com o botão direito do mouse e depois Add Existing Item, navegue para “C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Icons\dark.

Selecione e adicione os arquivos appbar.delete.rest.png e appbar.feature.camera.rest.png .

Vá novamente ao Solution Explorer e selecione ambos os ícones para abrir a propriedade.

Defina a Build Action e Copy to Output Directory para Content e Copy if newer, respectivamente.

No arquivo MainPage.xaml adicione a application bar abaixo do grid layoutroot como mostra a listagem 2.

Listagem 2: Criação da application bar com as opções de câmera e excluir



<phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
            <shell:ApplicationBarIconButton IconUri="appbar.feature.camera.rest.png" Text="camêra" Click="ApplicationBarIconButton_Click_1"/>
            <shell:ApplicationBarIconButton IconUri="appbar.delete.rest.png" Text="excluir" Click="ApplicationBarIconButton_Click_2"/>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>
Imagem de como deverá estar o aplicativo

Figura 2: Imagem de como deverá estar o aplicativo

Agora abra o arquivo MainPage.xaml.cs e adicione no topo da página as referências usadas, conforme a listagem 3.

Listagem 3: Referências usadas na MainPage.xaml.cs


using Microsoft.Phone.Tasks;
using System.IO.IsolatedStorage;
using System.Windows.Media.Imaging;
using System.IO;

Para escolher a foto, será usado o Task PhotoChooser, declare no topo da classe um objeto chamado chooser do tipo PhotoChooser, e instancie esse objeto no construtor da classe, conforme a listagem 4.

Listagem 4: Classe MainPage.xaml.cs


PhotoChooserTask chooser;
        // Constructor
        public MainPage()
        {
            InitializeComponent();

            chooser = new PhotoChooserTask();
            chooser.Completed += chooser_Completed;
        }

Adicione agora o método para tratar a imagem após ser escolhida e outro método para salvar a foto no Isolated Storage File, conforme a listagem 5.

Listagem 5: Classe MainPage.xaml.cs


void chooser_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
BitmapImage img = new BitmapImage();
img.SetSource(e.ChosenPhoto);

SalvarFoto(img);
ExibirFoto();
}
}

private void SalvarFoto(BitmapImage img)
{
using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication())
{
WriteableBitmap bmp = new WriteableBitmap(img);
if (!iso.DirectoryExists("Imagens"))
{
iso.CreateDirectory("Imagens");
}
using (IsolatedStorageFileStream stream = iso.OpenFile(@"Imagens\foto.jpg", FileMode.OpenOrCreate))
{
Extensions.SaveJpeg(bmp, stream, bmp.PixelWidth, bmp.PixelHeight, 0, 100);
}
}
}

E então será criado também um método que exibe a foto. Sobrescreva o método onNavigatedTo colocando esse método de exibição da foto, conforme a listagem 6.

Listagem 6: Classe MainPage.xaml.cs


private void ExibirFoto()
        {
            BitmapImage img = null;
            using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (iso.FileExists(@"Imagens\foto.jpg"))
                {
                    using (IsolatedStorageFileStream stream = iso.OpenFile(@"Imagens\foto.jpg", FileMode.Open))
                    {
                        img = new BitmapImage();
                        img.SetSource(stream);
                    }
                }
            }
            imgExemplo.Source = img;
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            ExibirFoto();
        }

O evento ApplicationBarIconButton_Click_1 exibirá a opção de escolha da foto, já o ApplicationBarIconButton_Click_2 será implementado para excluir a foto do Isolated Storage File, conforme a listagem 7.

Listagem 7: Classe MainPage.xaml.cs


private void ApplicationBarIconButton_Click_1(object sender, EventArgs e)
        {
            chooser.Show();
        }

        private void ApplicationBarIconButton_Click_2(object sender, EventArgs e)
        {
            using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication())
            {
                iso.Remove();
            }
            ExibirFoto();
        }

Por fim, pressione F5 e teste a aplicação, ela deverá estar conforme a figura 3, exibindo a galeria de imagens para escolha da imagem e salvá-la no aplicativo.

Aplicação em funcionamento com imagem anexada

Figura 3: Aplicação em funcionamento com imagem anexada

Assim concluímos mais este artigo. Até a próxima.