加载使用资源字典的外部插件时出现问题。我正在使用 MEF 和延迟加载在外部程序集中加载用户控件,这是一个用户控件库项目。
此用户控件以下列方式引用资源字典,并将其标记为 en export:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source ="MyTheme.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
主应用程序加载插件,并像这样导入它的资源字典:
[ImportMany(typeof(ResourceDictionary))]
private IEnumerable<ResourceDictionary> _resourceDictionaries { get; set; }
private void Load()
{
foreach (var resourceDictionary in _resourceDictionaries)
{
Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
}
}
这可以工作并从外部程序集中加载用户控件和字典。但是,当创建控件的实例时,主应用程序会抛出一个异常,指出它找不到引用的 ResourceDictionary。
如何让我的主机应用程序知道在哪里查找其外部用户控制资源字典?或者我应该改变我的用户控件引用其资源的方式?