В настоящее время я создаю приложение, состоящее из нескольких компонентов, каждый из которых по сути является пользовательским элементом управления WPF с небольшим кодом C # для работы системы плагинов (с использованием MEF).
Проблема, с которой я сталкиваюсь, состоит в том, что каждый компонент должен содержать значок, и для удобства я определил это как System.Windows.Media.Brush
, поэтому я могу просто использовать DrawingBrush
, экспортированный из Design. Теперь мне нужно получить доступ к этому куску XAML из C # не-WPF, где у меня сейчас ужасный обходной путь создания пользовательского элемента управления и запроса его ресурса:
private Brush CachedIcon = null;
public override Brush Icon
{
get
{
if (CachedIcon == null)
{
CachedIcon = (Brush)(new BlahControl().TryFindResource("Icon"));
}
return CachedIcon;
}
}
Я не смог найти способ прочитать этот ресурс (который является файлом .xaml и на который есть ссылка в ResourceDictionary
в пользовательском элементе управления) из "обычного" класса C #. У всего, что принадлежит WPF, есть такой замечательный метод TryFindResource
, но как это сделать иначе? Я не хочу, чтобы файл XAML со значком лежал без встраивания.