c# - 在 WPF 包 URI 中使用通配符的替代方法

标签 c# wpf xaml

我目前正在重构我的应用程序中的资源结构。 (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 包含在 icons 文件夹中。

可悲的是通过阅读 pack uri docs我还没有读过任何有关通配符或类似内容的内容。

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

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

最佳答案

Or do I just have to accept that each time I add a new Icons/Something.xaml I will have to manually add the line to merge it?

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

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

关于c# - 在 WPF 包 URI 中使用通配符的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57058116/

相关文章:

.net - 如何在 WPF 应用程序中实现气球消息

c# - 当文本框的绑定(bind)设置为 OneWayToSource 时,WPF TargetNullValue 返回值

c# - 在绑定(bind)到 ObservableCollection 的 WPF DataGridComboBoxColumn 中看不到现有数据

c# - 是否有任何计划在未来的 VS 版本中支持 XAML 的编辑和继续?

c# - 如何在 Winforms 中为长加载表单显示 "Loading . . . please wait"消息?

C# 使用 XSD 架构作为表单的元数据

c# - 通过 jquery 在中继器内单击复选框

c# - WPF 数据模板和绑定(bind)

WPF 单元和代码隐藏

c# - Visual Studio 2013 的 XAML 错误