WPF异常添加新的资源字典

WPF exception adding new Resource Dictionary

我需要添加一些 ResourceDictionaryWPF window。

如果我这样做,一切正常:

        var uri = $@"..\..\..\Assets\Styles";

        if (Directory.Exists(uri))
        {
            var allFile = Directory.GetFiles(uri);

            if (allFile == null) return;

            foreach (var file in allFile)
            {
                backupManagementWindow.MergeResourceDictionary(new Uri(file, UriKind.RelativeOrAbsolute));
            }
        }

由于我不想根据我的可执行目录定义Uri,我定义如下:

var uri = AppDomain.CurrentDomain.BaseDirectory + @"Assets\Styles";

Uri 是正确的(有文件)但是代码引发异常。

    public void MergeResourceDictionary(Uri uriResource)
    {
        var newResource = new ResourceDictionary {Source = uriResource};
        Resources.MergedDictionaries.Add(newResource);
    }

有谁知道为什么?谢谢!

您可以在使用资源字典时使用 Pack Uri Scheme

你的 uri 看起来像这样:

The following example shows the pack URI for a XAML resource file that is located in a subfolder of the referenced assembly's project folder.

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml