FrameworkElement.Resources 属性

定义

获取本地定义的资源字典。 在 XAML 中,可以通过 XAML 隐式集合语法将资源项建立为属性元素的 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 属性引用是内联的,紧接着是索引器用法,该用法检索具有字符串键 RainbowBrushResourceDictionary 项。 请注意显式强制转换; 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"];
}
Private Sub SetBGByResource(sender As Object, e As RoutedEventArgs)
    Dim b As Button = TryCast(sender, Button)
    b.Background = DirectCast(Me.Resources("RainbowBrush"), Brush)
End Sub
<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 是一个键制集合,如果你使用 Visual C++ 组件扩展 (C++/CX) 进行编程,则它基于 IMap<K,V> 模板;如果使用 C# 或 Microsoft Visual Basic 进行编程,则基于 IDictionary<TKey,TValue> 模板。 在代码中用于处理字典及其项的 API 反映了基础模板,因此反映了你用于应用的语言。

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

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

适用于

另请参阅