首页 > 解决方案 > 在 WPF 包 URI 中使用通配符的替代方法

问题描述

我目前正在重构我的应用程序中的资源结构。(Windows 桌面 WPF)

到目前为止,我使用单个Icons.xaml文件将我的所有图标存储为 xaml 矢量图。但随着时间的推移,文件变得非常混乱,我现在想把它分成多个文件。每个包含一组图标,将同一图标的变体分组在一起。(例如:Lock.xaml包含打开关闭锁图标的图标)

在我的中再次将这些文件合并到单个资源字典中Icons.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Icons/Log.xaml"></ResourceDictionary>
        <ResourceDictionary Source="Icons/Disconnect.xaml"></ResourceDictionary>
        <ResourceDictionary Source="Icons/Accept.xaml"></ResourceDictionary>
        <ResourceDictionary Source="Icons/Lock.xaml"></ResourceDictionary>
        (...)
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

我注意到,如果包 URI 仅支持源参数中的通配符,它​​会更容易和更清晰。所以我可以*.xaml用一行将所有内容都包含在图标文件夹中。

可悲的是,通过阅读pack uri 文档,我没有阅读任何有关通配符或类似内容的信息。

所以现在我想知道是否有其他方法可以让我将*.xaml特定目录中的所有文件(每个都只包括一个资源字典)合并到一个资源字典中,而无需明确指定每个文件。

还是我只需要接受每次添加新Icons/Something.xaml内容时都必须手动添加行来合并它?

标签: c#wpfxaml

解决方案


还是我只需要接受每次添加新的 Icons/Something.xaml 时我都必须手动添加行来合并它?

是的。要么就是这样,要么编写一些 C# 代码,在运行时检查特定文件夹中的所有文件,并创建要以编程方式合并的资源字典。

XAML 不支持这样做。它是一种标记语言。


推荐阅读