0

Кто-нибудь знает, как сделать список с несколькими изображениями. Я хочу, чтобы иметь возможность захватить изображение, а затем отобразить на экране, а затем захватить другой и отобразить после первого и так далее. Это в основном страница галереи изображений, которую я хочу создать. Я хотел бы хранить их где-нибудь на телефоне, чтобы их можно было восстановить, когда приложение снова запускается.ListBox с несколькими захваченными изображениями windows phone

Так оно и должно быть что-то, как на картинке: http://blog.xamarin.com/wp-content/uploads/2012/02/wp2.png

Спасибо заранее, я делал исследование по этому поводу, но ничего не могу найти.

ответ

1

Ну, это довольно легко. Вы используете ListBox для установки ItemsPanel в WrapPanel и либо привязываете ItemsSource к ObservableCollection (или List/Array, но ObservableCollection лучше подходит для Bindings).

Существует множество способов сделать это Давайте рассмотрим самый простой подход. В 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 быть список со всеми сохраненными изображениями URLs.

То пояснит, что я использую в некоторых из моих приложений (хотя я использую ViewModels и привязки и не установлен ItemsSource вручную)

Надеется, что это помогает

редактировать: О том, как захватить и сохранить изображения, которые вы можете прочитать эту статью: 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.

Это почти ваше полностью работающее приложение, когда оно составлено по ссылке сверху.

+0

@Stefan .. Спасибо, это дало мне приблизительное представление о том, что я предполагаю, но если есть пример приложения или полный исходный код, это будет очень полезно, еще раз спасибо – Jordan

+0

Что именно вы нужно, я не могу написать все ваше приложение для вас ... –

+0

@Stefan .. Я вполне доволен вашим кодом xaml, но когда дело доходит до его фактического кода, я думаю, что я немного расстраиваю. Все, что я хочу сделать, это иметь страницу, которая позволяет мне снимать изображения и сохранять их в изолированном хранилище, затем извлекать одинаковое изображение и отображать его на странице и т. Д. Поэтому я хочу, чтобы страница имела возможность хранить много захваченных изображений в виде списка.Спасибо за помощь в любом случае, надеюсь, что вы можете мне помочь еще больше – Jordan