C# windows wpf迭代加载资源文件

C# windows wpf迭代加载资源文件,c#,wpf,image,resources,iteration,C#,Wpf,Image,Resources,Iteration,我正在开发一个WPF应用程序,其中我想显示一个图标列表,这些图标已作为png图像嵌入到我的项目的Resources文件夹中。图像的“build action”是“resource”,它们的位置如下: 'NameOfProject'/Resources/Icons/'SomeCategories'/'AllTheIcons'.png 由于大约有1000个,我想通过foreach语句将它们加载到listview中,如下所示: foreach (imageorwhatever icon in Res

我正在开发一个WPF应用程序,其中我想显示一个图标列表,这些图标已作为png图像嵌入到我的项目的Resources文件夹中。
图像的“build action”是“resource”,它们的位置如下:

'NameOfProject'/Resources/Icons/'SomeCategories'/'AllTheIcons'.png
由于大约有1000个,我想通过foreach语句将它们加载到listview中,如下所示:

foreach (imageorwhatever icon in Resources/Icons/Category1) { ... }
foreach (imageorwhatever icon in Resources/Icons/Category2) { ... }
etc.
到目前为止,我还没有找到实现这一目标的方法。我找到的所有解决方案都分别以每个资源为目标,或者从文件中加载它们


我更喜欢以迭代方式加载图像,因为我真的不想在代码或xaml中定义1000个图像,要在WPF中使用它们,它们需要是ResourceDictionary的一部分,以便可以访问。下面是一些适合我的代码:

using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;

namespace ResourceTest
{
    public partial class MainWindow 
    {
        public MainWindow()
        {
            InitializeComponent();

            var dict = new ResourceDictionary();

            var baseDir = AppDomain.CurrentDomain.BaseDirectory;

            foreach (var file in Directory.GetFiles("Images"))
            {
                dict.Add(file, new BitmapImage(new Uri(Path.Combine(baseDir, file))));
            }

            Application.Current.Resources.MergedDictionaries.Add(dict);

            foreach (var file in Directory.GetFiles("Images"))
            {
                var img = new Image();
                img.Source = (BitmapImage) FindResource(file);

                ListBox.Items.Add(img);
            }
        }
    }
}
您只需要XAML中名为“ListBox”的ListBox即可运行此操作:

<ListBox x:Name="ListBox"  HorizontalAlignment="Left" Height="238" Margin="23,30,0,0" VerticalAlignment="Top" Width="130"/>

我没有花太多时间在这方面,而不是第二个循环,最好是将项目放入一个列表,然后分配给ResourceDictionary,然后分配给ListBox,但这是可行的

编辑:忘记了资源的名称,我只是将其作为文件名,如上面的示例所示。您可能希望更改此设置或至少删除扩展名