使用Windows Phone SDK 7.1 / C#在WP7中创建应用程序
使用照片选择器任务。但我想选择9张图片,在这里我只能选择一张图片。
如何一次选择9张图像?
请帮帮我,这是我的代码:
public partial class MainPage : PhoneApplicationPage
{
PhotoChooserTask photoChoserTask;
// Constructor
public MainPage()
{
InitializeComponent();
photoChoserTask = new PhotoChooserTask();
photoChoserTask.Completed +=
new EventHandler<PhotoResult>(photoChooserTask_Completed);
}
void photoChooserTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
y.Text= (e.ChosenPhoto.Length.ToString());
//Code to display the photo on the page in an image control named myImage.
//System.Windows.Media.Imaging.BitmapImage bmp =
//new System.Windows.Media.Imaging.BitmapImage();
//bmp.SetSource(e.ChosenPhoto);
//myImage.Source = bmp;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
{
try
{
photoChoserTask.Show();
}
catch (System.InvalidOperationException )
{
MessageBox.Show("An error occurred.");
}
}
}
}
}
答案 0 :(得分:8)
我在CodePlex for WP8.0上发布了MultiPhotoChooser (至少在8.0上工作,因为那是我开发的平台。)
随意下载并试用
https://multiphotochooser.codeplex.com/
以下是它的样子:
如果它能帮助您构建所需功能,请竖起大拇指。 感谢。
答案 1 :(得分:3)
PhotoChooserTask用于用户选择一张照片要允许用户使用多张照片,您必须创建自己的用户界面,并显示图片列表。 您可以使用XNA.MediaLibrary访问设备的现有图像并显示。 还为用户提供选择多个图像的界面。
答案 2 :(得分:2)
虽然PhotoChooserTask
只允许用户从其库中选择一个图像(或者如果将ShowCamera
设置为true,则从相机中捕获一个新图像),另一个选项是继续允许用户迭代选择图像,不允许它们继续,直到他们选择了9(我相信这是你要求的?)
public partial class MainPage : PhoneApplicationPage {
public class SelectedPhoto : IDisposable {
public Stream Data { get; private set; }
public string Name { get; private set; }
public BitmapImage Image { get; private set; }
public SelectedPhoto(string name, Stream photo) {
Name = name;
Data = new MemoryStream();
photo.CopyTo(Data);
Image = new BitmapImage();
Image.SetSource(Data);
}
public void Dispose() {
Data.Dispose();
}
}
private List<SelectedPhoto> _selectedPhotos = new List<SelectedPhoto>();
private PhotoChooserTask photoChoserTask;
// Constructor
public MainPage() {
InitializeComponent();
photoChoserTask = new PhotoChooserTask();
photoChoserTask.Completed += new EventHandler<PhotoResult>(photoChooserTask_Completed);
ProcessImages.IsEnabled = false;
ImageListBox.ItemsSource = _selectedPhotos
}
void photoChooserTask_Completed(object sender, PhotoResult e) {
if (e.TaskResult == TaskResult.OK) {
_selectedPhotos.Add(new SelectedPhoto(e.OriginalFileName, e.ChosenPhoto);
Button.IsEnabled = _selectedPhotos.Count < 9;
ProcessImages.IsEnabled = _selectedPhotos.Count == 9;
}
}
private void Button_Click(object sender, RoutedEventArgs e) {
{
try {
photoChoserTask.Show();
} catch (System.InvalidOperationException) {
MessageBox.Show("An error occurred.");
}
}
}
private void ProcessImages_Click(object sender, RoutedEventArgs e) {
MessageBox.Show("Doing something with your images... please wait...");
}
}
在您的XAML中,而不是只有一个图像,您需要将图像放在ListBox
的{{1}}内,并显示所有用户当前输入的图像(可能有一个擦除选项)一个图像,并添加一个不同的图像)。例如;
DataTemplate
如果要求最多 9张图像,我会更喜欢这种方法,而不是自定义多选图像选择器,原因有几个;
<ListBox x:Name="ImageListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding Image}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="ProcessImages" Click="ProcessImages_Click" />
您的应用程序将需要MediaLibrary
功能(显示为“访问媒体库”,我相信)。答案 3 :(得分:1)
PhotoChooserTask旨在让用户只选择一张照片。我猜你必须创建一个页面或控件,在其中显示所有可用的照片/图片,并使用CheckBox或其他东西将它们多选,并将结果返回给您的代码。