在WPF Pack URI中使用通配符的替代方法

时间:2019-07-16 13:13:48

标签: c# wpf xaml

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

到目前为止,我只用一个Icons.xaml文件将我的所有图标存储为xaml-vector图。但是随着时间的流逝,文件变得非常混乱,我现在想将其拆分为多个文件。每个图标包含一组图标,将同一图标的变体组合在一起。 (例如:Lock.xaml包含 open closed 锁定图标的图标)

在我的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仅在source参数中支持通配符,则将变得更加轻松和整洁。因此,我将所有*.xaml都包含在图标文件夹中,并用单行表示。

不幸的是,通读pack uri docs后,我还没有阅读任何有关通配符或类似内容的信息。

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

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

1 个答案:

答案 0 :(得分:1)

  

还是我只接受每次添加新的Icons / Something.xaml时都必须手动添加行以将其合并吗?

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

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