2010-12-13 3 views
2

Мое приложение составлено из нескольких сборок («плагинов»), которые загружаются основной исполняемой сборкой (которая не содержит никаких элементов управления или окон на ней). Теперь я хочу применить стили к элементам управления (например, Menus/ContextMenus, ToolBar (Tray) и т. Д.) Из стилей Application.Resources центральной сборки (возможно, с возможностью выбора пользователей из нескольких тем).Применение глобального стиля для нескольких сборок

Я получил его на работу с именованными стилями (x:Key="StyleName", на которые ссылается DynamicResource, StaticResource не будет работать), но перспектива добавления Style="{DynamicResource ...}" к каждому элементу управления в каждой сборке пугает меня десть немного. Но контрольные стили с TargetType="{x:Type TypeName}" не будут работать независимо от того, что я делаю.

Как я могу полностью управлять всеми элементами управления из одной центральной сборки?

Спасибо за помощь.

+0

Так что, добавив эти стили в App.xaml, вы не получите никакого эффекта, чем когда-либо? –

+0

Да, ничего не делает. –

+0

Я не могу воспроизвести это. Просто, чтобы быть уверенным, что это не проблема, ToolbarTray - опечатка правильно? Должен быть ToolBarTray :) –

ответ

2

Возможно, this great article on WPF skinning может помочь вам в правильном направлении?

Во вступительном слове он выделяет «три столпа» для скининга/тематики и того, как можно использовать иерархические ресурсы.

Хотя я действительно боюсь (без уверенности), что вам все равно придется менять свои статические ресурсы на динамические.

+0

Статья привела к решению: у меня были все стили, указанные внутри ресурса ResourceDictionary внутри свойства MergedDcitionaries основного тега ResourceDictionary вместе со ссылкой на скин для одного используемого мной UsercCntrol. Я переместил syles в основной словарь ресурсов, и он внезапно работает. Я не знал, что ResourceDictionary может иметь как MergedDictionaries, так и собственные ресурсы, поэтому я помещаю локальные ресурсы в объединенный словарь. Спасибо за ссылку, это действительно отличная статья. –