2011-05-05 107 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)); 
      };