可能重复:
how to populate a listbox with files in the project of my windows phone 7 application
我是C#的新手,这让我很烦恼。
我的应用程序从我在解决方案资源管理器中创建的名为Images
的文件夹中加载一组图像。我可以看到这些图像,如果我使用硬编码的URI和东西,但我想要做的是将这些图像命名为dinamycally,然后加载它。我看过一些像这样的问题,但无法解决我的问题。我这样想:
DirectoryInfo directoryInfo = new DirectoryInfo(@"/Images");
foreach (FileInfo file in directoryInfo.GetFiles()) {
photos.Add(new Photo() { FileName = file.FullName, PhotoSource = GetImageSource("Images/" + file.FullName) });
}
directoryInfo
始终设为null。解决方案资源管理器中显示的项目层次结构如下:
Project
Main.xaml
Maim.xaml.cs
Images
1.jpg
2.jpg
...
在任何帮助下谢谢。
答案 0 :(得分:1)
来自MSDN:
对于Windows Phone应用程序,所有I / O操作都受限制 隔离存储并且没有直接访问底层 操作系统文件系统或其他的隔离存储 应用
因此,您无法以您希望的方式访问Images文件夹。
由于无论如何都无法动态地将图像添加到XAP中,因此可用的图像将保持不变。您似乎只需手动添加URI:
BitmapImage myImage = new BitmapImage(new Uri("Images/myImage.png", UriKind.Relative));
如果您为不同的区域设置获得了不同的图像,则可以在资源文件中包含图像名称/路径,然后从那里创建它们。
或者如果您有一组默认图像,然后会有一些用户添加的图像,并且您想迭代所有这些图像,您可以在第一次启动时将您的Images文件夹中的默认值写入IsolatedStorage 。有关使用IsolatedStorage的详细信息,请See here。您可以迭代应用程序IsolatedStorageFile中的目录和文件(请参阅methods available)。
答案 1 :(得分: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将单个字符串组合成一个完整的路径(因此您无需担心Backslahes。
Path Namespace被低估了,我建议你仔细看看它,因为它可以节省你很多时间。