Я использовал собственный класс для реализации функциональности общих ресурсов в своем приложении WPF. Это пример кода для создания и управления словарями
public class SharedResourceDictionary : ResourceDictionary
{
/// <summary>
/// Internal cache of loaded dictionaries
/// </summary>
public static Dictionary<Uri, ResourceDictionary> SharedDictinaries = new Dictionary<Uri, ResourceDictionary>();
/// <summary>
/// Local member of the source uri
/// </summary>
private Uri _sourceUri;
private static bool IsInDesignMode
{
get
{
return (bool)DependencyPropertyDescriptor.FromProperty(DesignerProperties.IsInDesignModeProperty,
typeof(DependencyObject)).Metadata.DefaultValue;
}
}
/// <summary>
/// Gets or sets the uniform resource identifier (URI) to load resources from.
/// </summary>
public new Uri Source
{
get
{
if (IsInDesignMode)
{
return base.Source;
}
return _sourceUri;
}
set
{
if (!IsInDesignMode)
{
base.Source = value;
return;
}
_sourceUri = value;
if (!SharedDictinaries.ContainsKey(value))
{
base.Source = value;
SharedDictinaries.Add(value, this);
}
else
{
MergedDictionaries.Add(SharedDictinaries[value]);
}
}
}
}
этот файл реализован в виде отдельной сборки, и я сделал ссылку на него вмое WPF-приложение оболочки.
Мои ресурсы определены в app.xaml int следующим образом:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<Infrastructure:SharedResourceDictionary Source="pack://application:,,,/CuratioCMS.Client.Resources;Component/Themes/General/Brushes.xaml" />
<Infrastructure:SharedResourceDictionary Source="pack://application:,,,/Fluent;Component/Themes/Office2010/Silver.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
, если я удаляю Brushes.xaml, он работает, но с этим условием, когда я переключаюв режиме конструктора я получаю следующую ошибку
Исключение было выдано целью вызова
Может ли кто-нибудь помочь мне выяснить проблему?