在我的C# / WPF应用程序中,我想要显示来自图像文件目录树(目前为.bmp格式,但最终会有其他格式)的图像缩略图网格。未来,我可能会允许用户单击缩略图以查看更大的版本,或将鼠标悬停在上面以查看一些技术细节,但现在我只想显示缩略图。
图片数量是不可预测的,我的指示是如果有比屏幕可容纳的图片更多,则启用滚动(而不是缩小缩略图)。
我有一个递归例程来遍历树并识别要显示的文件...
那么,有什么好的方法可以做到这一点吗?我应该使用哪个XAML控件来放置所有这些内容?是网格(Grid)吗?我能添加行并在递归和发现更多文件时滚动它吗?还是我应该两次遍历树——一次获取计数并在页面中配置行和列,第二次实际显示缩略图?或者我对此的想法完全错误?我觉得这个问题在过去已经被解决了很多次,肯定有一个规范的设计模式,但我找不到。
图片数量是不可预测的,我的指示是如果有比屏幕可容纳的图片更多,则启用滚动(而不是缩小缩略图)。
我有一个递归例程来遍历树并识别要显示的文件...
private bool WalkTree(String sRoot)
{
string sDirectoryName;
string sFileName;
int iDirectoryCount = 0;
DirectoryInfo DirInfo;
DirInfo = new DirectoryInfo(sRoot);
// Get a list of all the files in this directory.
foreach (FileInfo fi in DirInfo.GetFiles("*.bmp"))
{
sFileName = fi.Name;
// DO SOMETHING WITH FILE FOUND HERE
}
// Now get a list of all the subfolders in this directory.
foreach (DirectoryInfo di in DirInfo.GetDirectories())
{
sDirectoryName = di.Name;
WalkTree(sRoot + "\\" + sDirectoryName); //recurse!!
iDirectoryCount++;
}
return true;
} // End WalkTree
那么,有什么好的方法可以做到这一点吗?我应该使用哪个XAML控件来放置所有这些内容?是网格(Grid)吗?我能添加行并在递归和发现更多文件时滚动它吗?还是我应该两次遍历树——一次获取计数并在页面中配置行和列,第二次实际显示缩略图?或者我对此的想法完全错误?我觉得这个问题在过去已经被解决了很多次,肯定有一个规范的设计模式,但我找不到。
foreach (FileInfo fi in DirInfo.GetFiles("*.bmp", SearchOption.AllDirectories))
- StillLearnin