导出 (0) 打印
全部展开
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
译文
原文

FrameworkElement.Resources 属性

获取或设置本地定义的资源字典。

命名空间:  System.Windows
程序集:  PresentationFramework(在 PresentationFramework.dll 中)
用于 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[AmbientAttribute]
public ResourceDictionary Resources { get; set; }
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>

XAML 值

oneOrMoreResourceElements

一个或多个对象元素,其中每个元素都定义一个资源。 每个 ResourceDictionary 中的每个资源属性元素都必须具有一个唯一的 x:Key 指令值,该值在从 ResourceDictionary 检索值时充当唯一键。

属性值

类型:System.Windows.ResourceDictionary
资源当前的本地定义字典,可在其中按键访问每个资源。

可在Extensible Application Markup Language (XAML) 中完整或部分定义的资源字典通常作为属性元素创建,并通常位于任何单个页或应用程序的根元素上。 将资源字典置于此级使得从页中的单个子元素(对于应用程序,则是从任意页)对其进行查找变得更加容易。 在大多数应用程序方案中,建议将样式定义为资源字典中的对象元素,或定义为外部资源,以便整个样式资源可以是独立的(此方法通过分隔需要编辑的物理文件,有助于将设计人员的责任与开发人员的责任分隔开来)。

请注意,此属性仅返回此元素中直接声明的资源字典。 这与实际的资源查找过程不同,在实际的资源查找过程中,子元素通过向上递归搜索,可以访问每个父元素中定义的任意资源。

还可以从集合内部通过代码引用资源,但请注意,除非声明该字典的元素引发 Loaded 事件,否则在 XAML 中创建的资源肯定不可访问。 事实上,资源是异步进行分析的,即使 Loaded 事件也无法保证可以引用 XAML 定义的资源。 因此,您通常只应在运行时代码中访问 XAML 定义的资源,或者通过其他 XAML 技术(如样式或对于特性值的资源扩展引用)访问这些资源。 通过代码访问资源时,实质上相当于从 XAML 中进行 DynamicResource 引用。

基础 ResourceDictionary 支持通过使用代码从集合内添加、移除或查询资源所需的方法。 可以设置 Resources 属性以支持将元素的资源集合完全替换为新的或不同的 ResourceDictionary 的方案。

请注意,所演示的 XAML 语法不包含对应于 ResourceDictionary 的元素。 这是隐式集合语法的一个示例;可以省略用来表示集合元素的标记。 但却指定了作为项添加到集合的元素。 有关隐式集合和 XAML 的更多信息,请参见 XAML 语法详述 一种仍将 ResourceDictionary 显式指定为元素的情况是您引入了合并字典,在这种情况下,ResourceDictionary 通常没有子元素。 有关详细信息,请参见 合并资源字典

This example shows how to define a resource and reference it by using an attribute in Extensible Application Markup Language (XAML).

The following example defines two types of resources: a SolidColorBrush resource, and several Style resources. The SolidColorBrush resource MyBrush is used to provide the value of several properties that each take a Brush type value. The Style resources PageBackground, TitleText and Label each target a particular control type. The styles set a variety of different properties on the targeted controls, when that style resource is referenced by resource key and is used to set the Style property of several specific control elements defined in XAML.

Note that one of the properties within the setters of the Label style also references the MyBrush resource defined earlier. This is a common technique, but it is important to remember that resources are parsed and entered into a resource dictionary in the order that they are given. Resources are also requested by the order found within the dictionary if you use the StaticResource 标记扩展 to reference them from within another resource. Make sure that any resource that you reference is defined earlier within the resources collection than where that resource is then requested. If necessary, you can work around the strict creation order of resource refererences by using a DynamicResource 标记扩展 to reference the resource at runtime instead, but you should be aware that this DynamicResource technique has performance consequences. For details, see 资源概述.


<Page Name="root"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <SolidColorBrush x:Key="MyBrush" Color="Gold"/>
    <Style TargetType="Border" x:Key="PageBackground">
      <Setter Property="Background" Value="Blue"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="TitleText">
      <Setter Property="Background" Value="Blue"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="FontSize" Value="18"/>
      <Setter Property="Foreground" Value="#4E87D4"/>
      <Setter Property="FontFamily" Value="Trebuchet MS"/>
      <Setter Property="Margin" Value="0,40,10,10"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="Label">
      <Setter Property="DockPanel.Dock" Value="Right"/>
      <Setter Property="FontSize" Value="8"/>
      <Setter Property="Foreground" Value="{StaticResource MyBrush}"/>
      <Setter Property="FontFamily" Value="Arial"/>
      <Setter Property="FontWeight" Value="Bold"/>
      <Setter Property="Margin" Value="0,3,10,0"/>
    </Style>
  </Page.Resources>
  <StackPanel>
    <Border Style="{StaticResource PageBackground}">
      <DockPanel>
        <TextBlock Style="{StaticResource TitleText}">Title</TextBlock>
        <TextBlock Style="{StaticResource Label}">Label</TextBlock>
        <TextBlock DockPanel.Dock="Top" HorizontalAlignment="Left" FontSize="36" Foreground="{StaticResource MyBrush}" Text="Text" Margin="20" />
        <Button DockPanel.Dock="Top" HorizontalAlignment="Left" Height="30" Background="{StaticResource MyBrush}" Margin="40">Button</Button>
        <Ellipse DockPanel.Dock="Top" HorizontalAlignment="Left" Width="100" Height="100" Fill="{StaticResource MyBrush}" Margin="40" />
      </DockPanel>
    </Border>
  </StackPanel>
</Page>


.NET Framework

受以下版本支持:4、3.5、3.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

社区附加资源

添加
显示:
© 2014 Microsoft