Загрузка пользовательских стилей в библиотеку пользовательских элементов управления WPF - PullRequest
1 голос
/ 22 октября 2010

У меня есть библиотека пользовательских элементов управления (например, MyCustomControls.dll), которая является плагином для стороннего приложения.Он выводится как библиотека классов и вызывается сторонним приложением во время выполнения.Моя проблема заключается в пользовательских стилях, которые я определил для различных пользовательских элементов управления, таких как listviewitem, теперь текстовый блок не может быть загружен на уровне приложения.

Как добавить свои пользовательские стили в иерархию поиска ресурсов, чтобы все элементы управлениябиблиотека будет использовать мои собственные стили?

Например, если я определю стиль ниже, все элементы управления в MyCustomControls.dll не увидят его при создании.Но если я добавлю MyCustomControls.dll в приложение и загрузлю его в ресурсы приложения, стиль будет применен.

Примечание: 3-епартийное приложение не является приложением WPF.Application.Current возвращает ноль во время выполнения.

1 Ответ

1 голос
/ 22 октября 2010

Если у вас нет доступа к стороннему приложению, и если оно не является приложением WPF (это Silverlight?), Вы не можете внедрить свои стили, написанные на xaml для WPF.Кроме того, только стороннее приложение будет знать, как применять скины позже.Я думаю, если это не ваше приложение, единственное, что вы можете сделать, это следовать «инструкциям производителя».

Просто для справки: если у вас есть обе стороны - основное приложение и ресурсы, которые нужно подключитьin, вы можете использовать MergeDictionaries для объединения ресурсов dll. Для доступа к dll ресурса вам необходимо использовать синтаксис Pack URI.Примерно так:

В App.xaml:

   <ResourceDictionary>
       <ResourceDictionary.MergedDictionaries>
          <ResourceDictionary Source="pack://application:,,,/YOUR_DLL;component/SUBFOLDER/YOURCUSTOMSTYLES.xaml"/>
       </ResourceDictionary.MergedDictionaries>
   </ResourceDictionary>

В этих сценариях важно, чтобы ключи ваших ресурсов были идентичны тем, которые ожидает основное приложение.Это связано с тем, что типичным механизмом создания скинов является использование DynamicResource при потреблении ресурсов, и поэтому они проверяются «ключом» каждый раз, когда они используются.Если вы замените существующий ресурс другим, используя ту же клавишу, например, переключите ресурс под названием «ButtonBackground» на желтый, и приложение использует ДИНАМИЧЕСКИ этот ресурс во всем приложении в качестве фона кнопок, все кнопки должны стать желтыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...