我需要在运行时从某些程序集中加载 ResourceDictionary 。
首先,我使用 Page 设置ResourceDictionary的 BuildAction ,并使用该代码构建uri。
var uri = new Uri(string.Format(@"/{0};component\Resources\MyResource.xaml",
assemblyName), UriKind.RelativeOrAbsolute);
这有效,但后来我意识到,在将uri设置为我的ResourceDictionary之前,我需要检查程序集。因为,如果ResourceDictionary不在程序集中,那将抛出异常。
var rd = new ResourceDictionary
{
Source = uri
};
所以我使用 EmbeddedResource 设置我的ResourceDictionary的BuildAction,以便使用以下代码查看程序集中的ResourceDictionary:
var hasResource = assembly.GetManifestResourceNames().
Any(resourceName => resourceName.EndsWith("MyResource.xaml"));
但是现在,我无法使用uri加载ResourceDictionary。我尽我所能,但没有成功。
有什么想法吗?谢谢!
答案 0 :(得分:0)
尝试将Build Action
设置为Page
然后您可以像这样访问程序集资源:
ResourceDictionary resources = new ResourceDictionary();
resources.Source = new Uri("pack://application:,,,/AssemblyName;component\Resources\MyResource.xaml");
然后你可以访问这样的资源:
object obj = resources["key"];