1

可能重复:
如何使用我的 windows phone 7 应用程序项目中的文件填充列表框

我是 C# 的新手,这让我很烦恼。

我的应用程序从我在解决方案资源管理器中创建的名为Images. 如果我将这些图像与 URI 和其他东西一起使用硬编码,我可以看到这些图像,但我想做的是动态地获取这些图像名称,然后加载它。我已经看到了一些类似的问题,但无法解决我的问题。我正在尝试这样:

DirectoryInfo directoryInfo = new DirectoryInfo(@"/Images");
foreach (FileInfo file in directoryInfo.GetFiles()) {
      photos.Add(new Photo() { FileName = file.FullName, PhotoSource = GetImageSource("Images/" + file.FullName) });
}

directoryInfo始终设置为空。解决方案资源管理器中显示的我的项目层次结构如下:

 Project
     Main.xaml
         Maim.xaml.cs
     Images
         1.jpg
         2.jpg
         ...

感谢任何帮助。

4

2 回答 2

1

来自MSDN

对于 Windows Phone 应用程序,所有 I/O 操作都仅限于隔离存储,不能直接访问底层操作系统文件系统或其他应用程序的隔离存储。

因此,您无法以您想要的方式访问您的图像文件夹。

由于无论如何您都不能动态地将图像添加到 XAP,因此可用的图像将是恒定的。看来您只需要手动添加 URI:

BitmapImage myImage = new BitmapImage(new Uri("Images/myImage.png", UriKind.Relative));

如果您有不同语言环境的不同图像,您可以在资源文件中包含图像名称/路径,然后从那里创建它们。

或者,如果您有一组默认图像,然后会有一些用户添加的图像,并且您想遍历所有这些图像,您可以在第一次启动时将您的默认值从图像文件夹写入到 IsolatedStorage。有关使用独立存储的详细信息,请参见此处。您可以遍历应用程序 IsolatedStorageFile 中的目录和文件(请参阅可用的方法)。

于 2012-12-11T22:39:48.247 回答
0

也许你想使用

string path = Path.Combine(Environment.CurrentDirectory, "Images");
foreach (string file in Directory.GetFiles(path) 
{
     photos.Add(new Photo {FileName = file, PhotoSource = GetImageSource(Path.Combine(path, Path.GetFileNameWithoutExtension(file))});
}

它返回文件夹内容的列表。

Path.Combine 将单个字符串组合成一个完整的路径(因此您无需担心反斜杠。

路径命名空间被低估了,我建议你仔细看看它,因为它会为你节省很多时间。

于 2012-12-11T21:27:05.400 回答