2011-05-05 104 views
2

得到的图像我有这样的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> 

在代码:

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; } 
} 

我已经保存的图像转换成隔离的存储,但问题是:我怎么能读取独立存储像id.jpg(1.jpg,2.jpg,3.jpg ...)这样的名字的图像?

回答

3

在你Single类的Img属性应该是类型的ImageSource的。要设置该属性(读取IsolatedStorage图像),你可以这样做:

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; 
} 

然后在您的代码片段:

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)); 
      };