问题
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...)?
回答1:
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));
};
回答2:
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