StaticResource, где ресурс находится во внешней сборке?

По сути, я хочу сохранить все свои ресурсы XAML во внешней сборке (для моих стилей). У меня есть ссылка на эту внешнюю сборку в моем приложении.

Есть ли какое-то отношение к сателлитным сборкам или что-то в этом роде, или как мне получить доступ к этим стилям, чтобы мое приложение могло иметь теги StaticResource без ошибок компиляции?

1 ответ

Решение

Предполагая, что вы сохраняете свои стили в ResourceDictionary в другой сборке вам просто нужно объединить его с текущими ресурсами (находятся ли они на Window или же UserControl или что угодно).

Если мы предположим, что

  • ваша другая сборка называется 'external.assembly.name'
  • ResourceDictionary находится под пространством имен ресурсов; а также
  • словарь называется "MyStyles.xaml"

... тогда вы можете объединить словари, как показано ниже:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary 
              Source="pack://application:,,,/external.assembly.name;component/Resources/MyStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <!-- other resources go here -->
    </ResourceDictionary>
</UserControl.Resources>
Другие вопросы по тегам