更新:2007 年 11 月
提供一个哈希表/字典实现,其中包含组件所使用的 WPF 资源以及 WPF 应用程序的其他元素。
命名空间:
System.Windows 程序集:
PresentationFramework(在 PresentationFramework.dll 中)
用于 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/xaml/presentation
<LocalizabilityAttribute(LocalizationCategory.Ignore)> _
Public Class ResourceDictionary _
Implements IDictionary, ICollection, IEnumerable, INameScope, _
ISupportInitialize, IUriContext
Dim instance As ResourceDictionary
[LocalizabilityAttribute(LocalizationCategory.Ignore)]
public class ResourceDictionary : IDictionary,
ICollection, IEnumerable, INameScope, ISupportInitialize, IUriContext
[LocalizabilityAttribute(LocalizationCategory::Ignore)]
public ref class ResourceDictionary : IDictionary,
ICollection, IEnumerable, INameScope, ISupportInitialize, IUriContext
/** @attribute LocalizabilityAttribute(LocalizationCategory.Ignore) */
public class ResourceDictionary implements IDictionary,
ICollection, IEnumerable, INameScope, ISupportInitialize, IUriContext
public class ResourceDictionary implements IDictionary, ICollection, IEnumerable, INameScope, ISupportInitialize, IUriContext
<ResourceDictionary .../>
<object>
<object.resourcesProperty>
oneOrMoreResources
</object.resourcesProperty>
</object>
- resourcesProperty
一个指定属性元素的属性,该属性的值类型为 ResourceDictionary。通常,这是 FrameworkElement、 FrameworkContentElement 或 Application(在使用应用程序资源的情况下)的 Resources 属性。
- oneOrMoreResources
指定为对象元素的一个或多个资源。所指定的每个资源都必须分配有一个 x:Key 属性。
在 XAML 加载程序加载应用程序代码时,不立即对 ResourceDictionary 中的项进行处理。相反,ResourceDictionary 将作为对象进行保留,并且仅在专门请求各个值时才对值进行处理。
ResourceDictionary 类不是从 DictionaryBase 派生的。ResourceDictionary 类而是实现 IDictionary,但在内部依赖于 Hashtable。
在可扩展应用程序标记语言 (XAML) 中,ResourceDictionary 类通常是一个隐式集合元素,该元素是用属性元素语法提供的多个 Resources 属性的对象元素值。有关 XAML 中的隐式集合的详细信息,请参见 XAML 语法术语。如果要指定合并的字典,则会引发异常;有关详细信息,请参见合并资源字典。
另一个可能的 XAML 用法是:将资源字典声明为离散 XAML 文件,并在运行时通过 Load 加载它或将其作为资源或松散文件包含在(完全信任)项目中。在这种情况下,可将 ResourceDictionary 声明为一个对象元素,作为 XAML 的根元素。如果要将其作为根元素,必须将适当的 XML 命名空间值(对于 WPF 命名空间为默认值,对于 XAML 命名空间通常为 x:)映射到 ResourceDictionary 元素。然后,可以添加定义资源的子元素,其中每个子元素都有一个 x:Key 值。
本示例演示如何使用应用程序资源。
下面的示例演示应用程序定义文件。应用程序定义文件定义资源部分(Resources 属性的值)。构成应用程序的所有其他页可以访问在应用程序级别定义的资源。这种情况下,资源是声明样式。因为包含控件模板的完整样式可能很长,本示例删除了在样式的 ContentTemplate 属性 setter 中定义的控件模板。
<Application.Resources>
<Style TargetType="Button" x:Key="GelButton" >
<Setter Property="Margin" Value="1,2,1,2"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Template">
<Setter.Value>
...
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
下面的示例演示了引用上例中定义的应用程序级资源的 XAML 页。通过使用 StaticResource 标记扩展(用于指定请求的资源的唯一资源键)引用该资源。在当前页中没有找到具有“GelButton”键的资源,所以请求资源的资源查找范围超出当前页,进入已定义的应用程序级资源。
<StackPanel
Name="root"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Button Height="50" Width="250" Style="{StaticResource GelButton}" Content="Button 1" />
<Button Height="50" Width="250" Style="{StaticResource GelButton}" Content="Button 2" />
</StackPanel>
有关完整示例(包含完整控件模板),请参见应用程序资源示例。
System..::.Object
System.Windows..::.ResourceDictionary
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
Windows Vista
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。
.NET Framework
受以下版本支持:3.5、3.0
参考
其他资源