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.
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>
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.
Figura 3: Aplicação em funcionamento com imagem anexada
Assim concluímos mais este artigo. Até a próxima.