从外部项目引用资源字典
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"/>
是否可以在单独的库(框架)项目中制作一个资源字典,然后在另一个库项目中引用它?在这个单独的项目中,我有一个想要使用它的 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"/>