メディアライブラリからラップパネル内のリストボックスに画像を取得しています。選択した画像(複数選択リストボックス)を分離ストレージに保存したいと思います。
リストボックスのxaml
<ListBox Name="vaultbox" SelectionMode="Multiple"
ItemContainerStyle="{StaticResource ListBoxItemStyle1}">
<TextBlock Text="It is so lonely here..." Visibility="Collapsed" />
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel ItemWidth="200" ItemHeight="200"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Image Name="image2"
Stretch="Fill"
VerticalAlignment="Top" Source="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
私はここで迷子になっています。私はこれをやろうとしていました。
List<BitmapImage> vltBitmapImage = new List<BitmapImage>();
foreach (string fileName in fileStorage.GetFileNames("images//*.*"))
{
if (fileName == null)
break;
string filepath = System.IO.Path.Combine("images", fileName);
using(IsolatedStorageFileStream imageStream =
fileStorage.OpenFile(filepath,FileMode.Open,FileAccess.Read))
{
var imageSource=PictureDecoder.DecodeJpeg(imageStream);
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(imageStream);
vltBitmapImage.Add(bitmapImage);
}
}
this.vaultbox.ItemsSource = vltBitmapImage;
上記のコードを使用すると、この例外が発生します
'System.Invalid.Operation.Exception ItemsSourceを使用する前に、Itemsコレクションを空にする必要があります'
メディアライブラリからリストボックスに写真を表示しているものとほぼ同じコードである理由がわかりません。
上記の同様のリストボックスからも異なりますが、ファイルをisolatedstorageに保存しようとしていますが、画像名を取得する方法を見つけているようです...ここを参照してください。現在「名前」を使用していますが、そのために何ができますか?
foreach (BitmapImage item in lstImageFromMediaLibrary.SelectedItems)
{
string filepath =System.IO.Path.Combine("images", "name");
IsolatedStorageFileStream ifs = fileStorage.CreateFile(filepath);
{
var bmp = new WriteableBitmap(item);
bmp.SaveJpeg(ifs,item.PixelWidth,item.PixelHeight,0,90);
}
}