Below is a complete working application using your code in the load.
You can select PNG files to save to isolated storage then reload the file to the image on display. One thing I noticed is that you must be careful that the saving stream closes and that the PNG is compatible:
Xaml:
<UserControl x:Class="IsoStorageSilverlightApplication.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<StackPanel x:Name="LayoutRoot" Background="White">
<Button Content="Save to Iso" Width="100" Name="saveButton" Click="saveButton_Click" Margin="10"/>
<Button Content="Load from Iso" Width="100" Name="loadButton" Click="loadButton_Click" />
<Image Name="image1" Stretch="Fill" Margin="10"/>
</StackPanel>
</UserControl>
Code behind:
using System.IO;
using System.IO.IsolatedStorage;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
namespace IsoStorageSilverlightApplication
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void saveButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "PNG Files (.png)|*.png|All Files (*.*)|*.*";
dialog.FilterIndex = 1;
if (dialog.ShowDialog() == true)
{
System.IO.Stream fileStream = dialog.File.OpenRead();
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
// Create a directory at the root of the store.
if (!store.DirectoryExists("Images"))
{
store.CreateDirectory("Images");
}
using (IsolatedStorageFileStream isoStream = store.OpenFile(@"Images\UserImageFile.png", FileMode.OpenOrCreate))
{
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, (int)fileStream.Length);
isoStream.Write(bytes, 0, (int)fileStream.Length);
}
}
}
}
private void loadButton_Click(object sender, RoutedEventArgs e)
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (store.FileExists(@"Images\UserImageFile.png"))
{
using (var isoStream = store.OpenFile(@"Images\UserImageFile.png", FileMode.Open, FileAccess.Read))
{
var len = isoStream.Length;
BitmapImage b = new BitmapImage();
b.SetSource(isoStream);
image1.Source = b;
}
}
}
}
}
}