Ссылка на словари ресурсов из внешнего проекта - PullRequest
0 голосов
/ 11 октября 2019

Можно ли создать словарь ресурсов в отдельном проекте библиотеки (фреймворка), а затем сослаться на него в другом проекте библиотеки? В этом отдельном проекте у меня есть UserControl, который хочет его использовать.

Это мой способ настройки моего решения.

enter image description here

SharedProject имеет словари ресурсов, и я ссылаюсь на них в своем проекте плагина. Затем я экспортирую свою библиотеку плагинов в MainProject, и в ней отображаются мои представления из плагина.

У меня все это работает ... кроме моих словарей. Я пытался ссылаться на свои словари в каждом из моих представлений

<UserControl.Resources>  
        <ResourceDictionary x:Key="dictionary">
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/InternalShared;component/Resources/Dictionary1.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/InternalShared;component/Resources/Dictionary2.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>

Но когда я пытаюсь сослаться на существующий стиль ...

<Button     Command="{Binding CommandOpenFile}"
            Style="{DynamicResource GenericButtonStyle}" 
            IsEnabled="{Binding IsEnabled}"
            Content="Restore Window" 
            Height="Auto" />

Но я получаю ресурс "GenericButtonStyle "не может быть решен . Это происходит везде, где я пытаюсь ссылаться на стиль в любом из моих словарей. Я не знаю почему.

Может кто-нибудь сказать мне, почему это происходит? Где-то еще мне нужно установить эту декларацию?

1 Ответ

1 голос
/ 11 октября 2019

Я поддерживаю внешнюю библиотеку пользовательского интерфейса WPF, которая используется многими различными решениями.

  • Убедитесь, что InternalShared является библиотекой WPF DLL
  • Объедините ваши внешние ресурсы с App.xamlвместо вашего основного приложения WPF

Например, приложения, использующие мои ресурсы, объединяют их следующим образом:

<ResourceDictionary Source="/InternalShared;component/Resources/Dictionary1.xaml"/>
...