gpt4 book ai didi

wpf - 在文件夹中搜索和列出 WPF 资源字典

转载 作者:行者123 更新时间:2023-12-04 23:33:27 25 4
gpt4 key购买 nike

我正在制作一个 WPF 应用程序,它将具有我们的构建系统标记的多个皮肤。理想情况下,我们希望应用程序列出可用的皮肤,因为某些版本将具有一对多的皮肤。

在运行时有没有办法枚举特定文件夹中的所有资源字典?

我想避免在我的代码隐藏中硬编码 XAML 文件名,因为这是一个不断变化的情况。

最佳答案

有点。

您可以枚举所有 BAML(编译的 XAML)文件,如下所示:

  var resourcesName = assembly.GetName().Name + ".g";
var manager = new System.Resources.ResourceManager(resourcesName, assembly);
var resourceSet = manager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
var allXamlFiles =
from entry in resourceSet.OfType<DictionaryEntry>()
let fileName = (string)entry.Key
where fileName.EndsWith(".baml")
select fileName.Substring(0, fileName.Length-5) + ".xaml";

如果不实际加载它们,就无法知道其中哪些是 ResourceDictionaries,哪些是其他 XAML,例如 Windows 或 UserControl。因此,您直接问题的答案是“否”,除非您加载您找到的每个 XAML 以检查它是否为 ResourceDictionary。这会很慢。

另一方面,如果您愿意为 ResourceDictionaries 使用命名方案,那么您可以枚举程序集中的所有 BAML 并选择与您的命名方案匹配的任何一个,并相信它们是 ResourceDictionaries。只需扩展上述查询中的“where”子句即可。

因此,答案是“有点”。

关于wpf - 在文件夹中搜索和列出 WPF 资源字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1765920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com