I have this XAML
<ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}" Name="list">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,17">
<!--Replace rectangle with image-->
<Image Height="100" Width="100" Source="{Binding Img}" Margin="12,0,9,0"/>
<StackPanel Width="311">
<TextBlock Text="{Binding Pos}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
In the Code:
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
IsolatedStorageFileStream isoStoreStream = isoStore.OpenFile("chart.xml", FileMode.Open);
using (StreamReader reader = new StreamReader(isoStoreStream))
{
XElement xml = XElement.Parse(reader.ReadToEnd());
var list = from var in xml.Descendants("Pos")
select new Single
{
Pos = Int32.Parse(var.Attribute("id").Value),
Img = how read from isolated storage the image id.jpg?
};
public class Single
{
public int Pos { set; get; }
public ??? Img { set; get; }
}
I have already saved the images into isolated storage but the problem is: how can I read from isolated storage the image that have names like id.jpg(1.jpg, 2.jpg, 3.jpg...)?
In your Single
Class the Img
property should be of type ImageSource. To set this property (read the image from IsolatedStorage) you can do this:
private ImageSource getImageFromIsolatedStorage(string imageName)
{
BitmapImage bimg = new BitmapImage();
using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = iso.OpenFile(imageName, FileMode.Open, FileAccess.Read))
{
bimg.SetSource(stream);
}
}
return bimg;
}
Then in your code snippet:
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
IsolatedStorageFileStream isoStoreStream = isoStore.OpenFile("chart.xml", FileMode.Open);
using (StreamReader reader = new StreamReader(isoStoreStream))
{
XElement xml = XElement.Parse(reader.ReadToEnd());
var list = from var in xml.Descendants("Pos")
select new Single
{
Pos = Int32.Parse(var.Attribute("id").Value),
Img = getImageFromIsolatedStorage(string.Format("{0}.jpg", Pos));
};
Here is a very complete example of how to write to and read from ISO storage.
http://www.codeproject.com/Articles/38636/Saving-Bitmaps-to-Isolated-Storage-in-Silverlight-.aspx
来源:https://stackoverflow.com/questions/5900315/how-get-image-from-isolated-storage