FrameworkElement.Resources 属性

2013/12/13

获取本地定义的资源字典。 在 XAML 中,可以通过 XAML 隐式集合语法,将资源项建立为 frameworkElement.Resources 属性元素的子对象元素。

Namespace:  System.Windows
程序集:  System.Windows(位于 System.Windows.dll 中)
XMLNS for XAML: 未映射到 xmlns。

public ResourceDictionary Resources { get; set; }
<frameworkElement>
  <frameworkElement.Resources>
    oneOrMoreResourceElements
  </frameworkElement.Resources>
</frameworkElement>

XAML 值

oneOrMoreResourceElements

一个或多个对象元素,其中每个元素都创建和定义一个资源。 ResourceDictionary 中的每个资源属性元素都必须具有一个唯一键(通常为 x:Key),该键被指定为一个属性。 从 ResourceDictionary 中检索值时要使用该键。

属性值

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

可在 XAML 中完整或部分定义的资源字典通常通过 Resources 属性的 XAML 属性元素来创建,并通常位于应用程序中任何单个页的根部或 Application(如果您在使用自定义的 Application,这可能是一个派生类)自身的根部。 将资源字典置于 XAML 中的根级,可使从 XAML 页中定义的对象树中的单个子对象引用范围中的资源变得更加容易预测。

获取 Resources 值后,通过调用ResourceDictionary API 可以在代码中引用基于 XAML 定义的资源创建的资源;但请注意除非声明该字典的资源引发 Loaded,否则在 XAML 中创建的资源肯定不可访问,另外也请注意,字典查找在应用模板中行为方式不同。

该属性值的基础 ResourceDictionary 类型支持通过使用代码在字典中添加、移除或查询资源所需的成员。

请注意,所演示的 XAML 语法不包括 ResourceDictionary 类的对象元素。 这是 XAML 隐式集合语法的一个示例;可以省略用来表示集合元素的标记。 作为项添加到集合中的元素被指定为其基础类型支持集合 Add 方法的属性的属性元素子元素。

应显式声明 XAML 中的 ResourceDictionary 对象元素的一种情况是:您要支持对象上的合并资源字典。 它通常仅在 XAML 根上完成。

如果打算在 XAML 标记中使用资源,应该通过一个 xmlns 声明映射 XAML 语言的 XAML 命名空间。 通常将此看做 x: 前缀。 这一点是必要的,因为标记中定义的各个资源必须各有唯一的键值。 Key 在 XAML 语言/x: 命名空间中定义,并且 Key 通常是为 Windows Phone 指定资源键的方式,某些特殊情况除外。 为 Windows Phone 生成 XAML 的根元素的多数(如果不是全部)工具都已经为您完成了 XAML 语言的 XAML 命名空间到 x: 前缀的映射。

下面的 XAML 演示包含一个项(即 DataTemplate)的简单 Resources 字典的 XAML 定义。


<Grid.Resources>
    <DataTemplate x:Key="CBTemplate">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Image Grid.Column="0" Width="50" Height="50" 
                Source="{Binding Photo}" Stretch="Fill"/>
            <TextBlock Grid.Column="1" Text="{Binding Title}" 
                Margin="10" HorizontalAlignment="Left" FontSize="20"/>
        </Grid>
    </DataTemplate>
</Grid.Resources>


下面的代码示例演示通常应如何使用代码访问 Resources 属性。 在本例中,Resources 属性引用是内联的,后面紧跟一个索引器用法(它通过字符串键 RainbowBrush 检索 ResourceDictionary 项)。 记下隐式强制转换;来自 ResourceDictionary 中项的返回值始终为泛型对象。


void SetBGByResource(object sender, RoutedEventArgs e)
{
  Button b = sender as Button;
  b.Background = (Brush)this.Resources["RainbowBrush"];
}


对于使用 ResourceDictionary 的其他代码示例,请参见 ResourceDictionary

Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2014 Microsoft