c# - 如何检查 WPF 资源是否存在?

标签 c# wpf resources

我有一个应用程序,它读取特定类型的 XML 文件。这些 XML 文件可以相互引用,例如:

<MyXml>
    <Reference Path="pack://application:,,,/MyOtherXML.xml"/>
    <!--More data-->
</MyXml>

这主要是因为它们很长,您不想重复 180 多行 XML。

但是,如果文件是资源,我不确定如何检查文件是否存在。我知道,如果它们是普通文件,我可以只使用 File.Exists,但我认为您不能对资源这样做。我还找到了this ,但答案似乎是错误的。那么如何检查 WPF 上是否存在资源?

最佳答案

您需要使用 GetManifestResourceStream 来获取资源并从字典中读取键集合,如下所示 -

    public static string[] GetResourceNames()
    {
        var assembly = Assembly.GetExecutingAssembly();
        string resName = assembly.GetName().Name + ".g.resources";
        using (var stream = assembly.GetManifestResourceStream(resName))
        {
            using (var reader = new System.Resources.ResourceReader(stream))
            {
                return reader.Cast<DictionaryEntry>().Select(entry => 
                         (string)entry.Key).ToArray();
            }
        }
    }

关于c# - 如何检查 WPF 资源是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16870698/

相关文章:

c# - 绑定(bind)按钮功能

wpf - 将只读依赖属性数据绑定(bind)到 Xaml 中的 ViewModel

Algorithm ----哪里可以得到算法资源-----调度算法等等

c# - 解码图像时出错

c# - 需要帮助 Sql Asp.net C#

c# - 如何使 DataGrid 看起来像 CardView?

c# - 创建新实体时如何在加载时验证表单?

java - 尝试从 jar 内加载文件时出现问题

javascript - 如何仅在延迟的 Javascript 外部文件加载后才执行 Javascript?

c# - 如何在 Microsoft Azure 虚拟服务器上创建和保存临时文件