Что ж, это довольно легко. Вы используете ListBox, устанавливаете ItemsPanel в WrapPanel и либо привязываете ItemsSource к ObservableCollection (или к списку/массиву, но ObservableCollection лучше подходит для привязок).
Есть несколько способов сделать это. Давайте возьмем самый простой подход. В xaml вы определяете свой ListBox:
<ListBox x:Name="listbox">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="5"
Background="{StaticResource PhoneChromeBrush}"
Height="180"
Width="180">
<Image Source="{Binding}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
В вашем коде вы можете загружать изображения примерно так:
ObservableCollection<BitmapImage> images = new ObservableCollection<BitmapImage>();
List<String> bitmapuris = ....
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
foreach(var bitmapuri in bitmapuris)
{
System.Windows.Media.Imaging.BitmapImage bitmap = new System.Windows.Media.Imaging.BitmapImage();
if (isoStore.FileExists(bitmapuri))
{
using (IsolatedStorageFileStream stream = isoStore.OpenFile(bitmapuri, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
bitmap.CreateOptions = System.Windows.Media.Imaging.BitmapCreateOptions.BackgroundCreation;
bitmap.SetSource(stream);
}
}
images.Add(bitmap);
}
}
listbox.ItemsSource = images;
Bitmapuris представляет собой список со всеми URL-адресами сохраненных изображений.
В основном это то, что я использую в некоторых своих приложениях (хотя я использую ViewModels и Bindings и не устанавливаю ItemsSource вручную)
Надеюсь это поможет
edit: о том, как захватывать и сохранять изображения, вы можете прочитать в этой статье: http://www.c-sharpcorner.com/UploadFile/mahakgupta/capture-save-and-edit-image-in-windows-phone-7/
Я бы сохранил изображения в определенной папке, например «/Images/». Таким образом, вы можете загрузить все изображения, которые вы ранее записали в свое приложение, начиная с кода, который я разместил выше, с List<String> bitmapuris
, установленным с помощью этого метода:
List<String> getFiles(String folderpath)
{
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
return storage.GetFileNames(folderpath).ToList();
}
вот так List<String> bitmapuris = getFiles("/Images/*");
и когда вы захватили изображение, вы можете просто добавить его в свой ListBox следующим образом:
System.Windows.Media.Imaging.BitmapImage bitmap = new System.Windows.Media.Imaging.BitmapImage();
bitmap.CreateOptions = System.Windows.Media.Imaging.BitmapCreateOptions.BackgroundCreation;
bitmap.SetSource(myimagestream);
images.Add(bitmap);
предоставление изображений - это ObservableCollection<BitmapImage>
, который вы установили в качестве ItemsSource в свой ListBox.
Теперь это почти ваше полностью работающее приложение, в сочетании со ссылкой выше.
person
Stefan Wexel
schedule
23.06.2013