FrameworkElement.Resources 属性

定义

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

ResourceDictionary Resources();

void Resources(ResourceDictionary value);
public ResourceDictionary Resources { get; set; }
var resourceDictionary = frameworkElement.resources;
frameworkElement.resources = resourceDictionary;
Public Property Resources As ResourceDictionary
<frameworkElement>
  <frameworkElement.Resources>
    oneOrMoreResourceElements
  </frameworkElement.Resources>
</frameworkElement>

属性值

当前本地定义的资源字典,其中每个资源的键都可以访问。

示例

此示例演示包含一个项 (即 DataTemplate)的简单资源字典的 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>
<GridView ItemTemplate="{StaticResource CBTemplate}" .../>

使用 XAML 资源定义和资源引用是使用 Resources 属性的典型方法。 大多数情况下,仅 XAML 可以处理常见的资源方案。 但是,还可以使用 属性访问集合 API,从而使用运行时代码检索资源(如果方案需要)。 此示例演示对 属性的代码访问 Resources 。 在此示例中,Resources属性引用是内联的,紧接着是索引器用法,该索引器使用字符串键 RainbowBrush检索 ResourceDictionary 项。 请注意显式强制转换; ResourceDictionary 中项的返回值始终为非类型化对象。

void MainPage::SetBGByResource(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
  Button^ b = safe_cast<Windows::UI::Xaml::Controls::Button^>(sender);
  b->Background = safe_cast<Windows::UI::Xaml::Media::Brush^>(this->Resources->Lookup("RainbowBrush"));
}
void SetBGByResource(object sender, RoutedEventArgs e)
{
  Button b = sender as Button;
  b.Background = (Brush)this.Resources["RainbowBrush"];
}
<Page.Resources>
...
  <LinearGradientBrush x:Key="RainbowBrush">
    <GradientStop Color="Red" Offset="0.05" />
    <GradientStop Color="Orange" Offset="0.23" />
    <GradientStop Color="Yellow" Offset="0.41" />
    <GradientStop Color="Green" Offset="0.59" />
    <GradientStop Color="Blue" Offset="0.77" />
    <GradientStop Color="Purple" Offset="0.95" />
 </LinearGradientBrush>
</Page.Resources>

注解

集合中 Resources 项的主要用途是使用 {StaticResource} 标记扩展 引用 (或类似的 {ThemeResource} 标记扩展 引用) 从 XAML 的其他部分引用它们。 如果要在运行时访问 Resources 集合,可以使用相关模板的 API 查询、添加或删除 ResourceDictionary 中的项。

有关详细信息和示例,请参阅 ResourceDictionary 和 XAML 资源引用

ResourceDictionary 是一个键式集合,它基于 IMap<K,V> 模板(如果使用 Visual C++ 组件扩展 (C++/CX) )或 IDictionary<TKey,TValue> 模板(如果使用 C# 编程)。 在代码中用于处理字典及其项的 API 反映了基础模板,因此反映了你用于应用的语言。

应用程序 还具有 Resources 属性,该属性可用于存储应从应用中的多个页面访问的资源。 自定义控件的资源还可以存储在由模板化控件的默认项目模板创建的单独 XAML 文件中。

在 XAML 资源 集合中看到的项不一定是运行时可用的全部 XAML 定义资源。 由于 MergedDictionaries 属性对 ResourceDictionary 的影响,其他资源在运行时可用。 该值 MergedDictionaries 可以引入其他字典,例如系统定义的资源,例如来自默认 XAML 控件模板的资源。 运行时主题特定的资源也可从类似的 ThemeDictionaries 属性获得。 如果在运行时访问 Resources 集合并使用索引器或 Lookup 方法查询特定键Item,则可以访问和检索这些资源。 有关详细信息,请参阅 ResourceDictionary 和 XAML 资源参考。 此外, Application.Resources 可以提供可用于应用中任何 XAML 引用的资源,从而扩展任何给定 FrameworkElement.Resources 字典中的资源。

适用于

另请参阅