从外部项目引用资源字典

Referencing resource dictionaries from an external project

是否可以在单独的库(框架)项目中制作一个资源字典,然后在另一个库项目中引用它?在这个单独的项目中,我有一个想要使用它的 UserControl。

这是我的解决方案设置方式。

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"。这种情况随处可见,我尝试在我的任何词典中引用该样式。我不知道为什么。

谁能告诉我为什么会这样?我还需要在其他地方设置此声明吗?

我维护一个外部 WPF UI 库,供许多不同的解决方案使用。

  • 确保 InternalShared 是 WPF DLL
  • 改为将您的外部资源合并到您的主 WPF 应用程序的 App.xaml

例如,使用我的资源的应用程序会像这样合并它们:

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