Первый - вы можете использовать перекрестную сборку, добавив имя сборки после трех запятых. Таким образом, вы можете создать разделяемую библиотеку с общими стилями и прочим качеством XAML, которая может быть разделена между несколькими сборками.
Синтаксис такой:
pack://application:,,,/Common;component/CommonResources.xaml
где Common - это имя сборки, а все после компонента - это путь внутри этой сборки к сопоставленному ресурсу. Последний может использоваться только внутри одной сборки (и должен быть предпочтительным).
Я часто использую его для ResourceDictionaries, находящихся в общей сборке над несколькими сборками модульного типа.