У меня есть две библиотеки и один макет проекта сборки приложения, и мне интересно, как я могу ссылаться на стили по их ключу в одной из моих библиотек, которая определена в другой.
Макет моего решения:
- WpfControls.dll - содержит общие многократно используемые элементы управления, такие как основанный на WPF элемент управления NumericUpDown, а также другие базовые элементы управления и некоторые стили, которые я хотел бы сделать повторно используемыми. Для примера скажем, что мой ключ стиля здесь определен как MyButtonStyle .
- SpecializedControls.dll - содержит элементы управления, специализированные для нашего приложения, такие как настраиваемые составные элементы управления и пользовательские элементы управления в WPF. Здесь я бы хотел сослаться на стиль MyButtonStyle , определенный в сборке WpfControls.dll.
- Application.exe - эта сборка использует элементы управления, определенные в сборке SpecializedControls.dll.
Я видел несколько примеров, объясняющих, как сделать это с помощью простой единой библиотеки управления и сборки приложения, но в моем случае у меня есть две сборки и приложение. Другими словами, в моем случае у меня нет App.xaml во второй библиотеке управления, где я мог бы использовать концепцию MergeDictionaries. Я вполне уверен, что если бы я захотел, я мог бы поместить ссылку MergedDictionaries непосредственно в каждый файл XAML элементов управления, чтобы объединить весь Generic.xaml, определенный в сборке WpfControls.dll, но я предполагаю, что это приведет к избыточному объединению стилей в различных местах. в моей сборке SpecializedControls, которая не кажется лучшим решением. Что еще хуже, эти словари также могут быть объединены с Application.exe, это начинает раздувать мое приложение во время выполнения?
Кто-нибудь может уточнить, какой рекомендуемый или лучший подход для обмена такими стилями с наименьшими затратами на программирование и ресурсы.
Обновление : После небольшого тестирования выясняется, что у меня возникают проблемы при ссылке на любой ресурс, определенный в Generic.xaml по его ключу, даже в той же сборке. Может быть что-то совершенно не так в том, как я понимаю, как работают ключи ресурсов, поэтому мне придется немного больше исследовать, а также изучить ComponentResourceKey. Если у кого-то есть какие-либо подсказки или предложения, пожалуйста, помогите.