更新:2007 年 11 月
提供一个哈希表/字典实现,其中包含组件所使用的 WPF 资源以及 WPF 应用程序的其他元素。
<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>
一个指定属性元素的属性,该属性的值类型为 ResourceDictionary。通常,这是 FrameworkElement、 FrameworkContentElement 或 Application(在使用应用程序资源的情况下)的 Resources 属性。
指定为对象元素的一个或多个资源。所指定的每个资源都必须分配有一个 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>
有关完整示例(包含完整控件模板),请参见应用程序资源示例。
Windows Vista