【wpf】ResourceDictionary 字典资源的用法
如果你的字典资源是写在启动项目的App.xaml里
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/YourNonStartupProject;component/Resources/SharedResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
C# 进行调用
Style x = App.Current.Resources["RoundedRectangle"];
如何引用非启动项目的资源
1. 在非启动项目中定义资源
假设你在非启动项目中有一个 ResourceDictionary
,你可以像下面这样在 XAML
文件中定义一个资源。
例如,在非启动项目的 Resources/SharedResources.xaml
文件中定义资源:
<!-- SharedResources.xaml -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="RoundedRectangle" Color="Red"/>
</ResourceDictionary>
2. 在非启动项目中直接引用和使用资源
要在非启动项目的代码中直接使用这些资源,可以通过加载 ResourceDictionary
来实现。你可以在任何地方加载和使用它,只要该项目已引用资源字典所在的项目。
例如,如果你有一个 RoundedRectangle
资源在 SharedResources.xaml
中,你可以在非启动项目的代码中直接加载并使用它:
var resourceDictionary = new ResourceDictionary
{
Source = new Uri("pack://application:,,,/YourNonStartupProject;component/Resources/SharedResources.xaml")
};
var roundedRectangle = resourceDictionary["RoundedRectangle"] as SolidColorBrush;
这里的 YourNonStartupProject
是非启动项目的名称,Resources/SharedResources.xaml
是资源文件的路径。
在启动项目中引用非启动项目的资源
如果你希望启动项目能够访问非启动项目中的资源字典,你需要确保启动项目引用了非启动项目,并且在启动项目的 App.xaml
中引用该资源字典:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/YourNonStartupProject;component/Resources/SharedResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然后,你就可以在启动项目中使用 App.Current.Resources["RoundedRectangle"]
来访问该资源。
总结
- 你可以在非启动项目中直接创建资源字典并引用它。
- 如果要在非启动项目中使用资源,可以通过代码动态加载该资源字典。
- 如果要让启动项目访问非启动项目的资源,可以在启动项目的
App.xaml
中合并该资源字典。
这种方式可以避免依赖于 App.Current
,并直接在代码中使用资源字典。