Ниже приведено полное рабочее приложение, использующее ваш код в загрузке.
Вы можете выбрать файлы PNG для сохранения в изолированном хранилище, а затем перезагрузить файл в изображение на дисплее. Одна вещь, которую я заметил, это то, что вы должны быть осторожны, чтобы поток сохранения закрывался и чтобы PNG был совместимым:
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>
Код позади:
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;
}
}
}
}
}
}