Эта документация перемещена в архив и не поддерживается.

FrameworkElement.Resources - свойство

Обновлен: Ноябрь 2007

Возвращает или задает локально определенный словарь ресурсов.

Пространство имен:  System.Windows
Сборка:  PresentationFramework (в PresentationFramework.dll)
XMLNS для XAML: http://schemas.microsoft.com/winfx/xaml/presentation

public ResourceDictionary Resources { get; set; }
/** @property */
public ResourceDictionary get_Resources()
/** @property */
public  void set_Resources(ResourceDictionary value)

public function get Resources () : ResourceDictionary
public function set Resources (value : ResourceDictionary)
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>
oneOrMoreResourceElements
                    Один или несколько элементов-объектов, каждый из которых определяет ресурс. Каждый элемент свойства ресурса в каждом ResourceDictionary должен иметь уникальное значение Атрибут x:Key, которое служит уникальным ключом при получении значений из ResourceDictionary.
                

Значение свойства

Тип: System.Windows.ResourceDictionary
Текущий локально определенный словарь ресурсов, в котором к каждому ресурсу можно получить доступ по ключу.

Словари ресурсов, которые можно определить полностью или частично в Язык XAML (Extensible Application Markup Language), обычно создаются в виде элемента-свойства и чаще всего располагаются в корневом элементе любой отдельной страницы или приложения. Размещение словаря ресурсов на этом уровне облегчает поиск из отдельных дочерних элементов на странице (или из любой страницы, в случае приложения). В большинстве сценариев приложений рекомендуется определить эти стили как элементы-объекты в словаре ресурсов или как внешние ресурсы, чтобы весь ресурс стиля мог быть автономным (этот подход помогает отделить ответственность дизайнера от ответственности разработчика путем разделения физических файлов, которые нужно редактировать).

Обратите внимание, что данное свойство возвращает только словарь ресурсов, объявленный непосредственно внутри данного элемента. Это отличается от фактического процесса поиска ресурсов, когда дочерний элемент может получать доступ к любому из ресурсов, определенных в каждом родительском элементе, выполняя рекурсивный восходящий поиск.

К ресурсам можно также обращаться в коде изнутри коллекции, но следует учитывать, что ресурсы, созданные в XAML, определенно не будут доступны до инициирования события Loaded элементом, объявляющим словарь. Фактически синтаксический анализ ресурсов выполняется асинхронно и даже событие Loaded не гарантирует, что можно обращаться к ресурсу, определенному в XAML. По этой причине обращаться к ресурсам, определенным в XAML, обычно следует только в коде времени выполнения или с помощью других приемов XAML, например стилей или расширенных ссылок на ресурсы для значений атрибутов. Доступ к ресурсам из кода по сути эквивалентен ссылке DynamicResource из XAML.

Базовый ResourceDictionary поддерживает методы, необходимые для добавления, удаления или запроса ресурсов из коллекции с помощью кода. Свойство Resources доступно для установки, с целью поддержки сценария полного замещения коллекции ресурсов элемента новым или другим ResourceDictionary.

Обратите внимание, что показанный синтаксис XAML не включает в себя элемент для ResourceDictionary. Это пример неявного синтаксиса коллекции; тег, представляющий элемент-коллекцию, можно пропустить. Вместо этого указываются элементы, добавленные в коллекцию. Дополнительные сведения о неявных коллекциях и XAML см. в разделе Терминология синтаксиса XAML. Одним из случаев, когда ResourceDictionary все же задается явно в виде элемента, является внедрение объединенного словаря, когда обычно не существует дочерних элементов данного ResourceDictionary. Дополнительные сведения см. в разделе Объединенные словари ресурсов.

В этом примере описывается порядок определения ресурса и создания ссылки на него с помощью атрибута в Язык XAML (Extensible Application Markup Language).

В следующем примере определяются ресурсы двух типов: ресурс SolidColorBrush, а также несколько ресурсов Style. Ресурс SolidColorBrushMyBrush используется для предоставления значений нескольких свойств, каждое из которых принимает значение типа Brush. Каждый из ресурсов класса Style (PageBackground, TitleText и Label) предназначен для определенного типа элемента управления. Стили используются для установки нескольких свойств для целевых элементов управления. Для этого создается ссылка ключа ресурса на ресурс стиля, который используется для установки свойства Style для нескольких конкретных элементов управления, определенных в XAML.

Обратите внимание, что одно из свойств метода установки стиля Label также ссылается на ресурс MyBrush, определенный ранее. Это стандартный способ. Однако следует учитывать, что анализ ресурсов и их добавление в словарь ресурсов осуществляется в том порядке, в котором они заданы. Если для ссылки на ресурсы из другого ресурса используется Расширение разметки StaticResource, их запрос также осуществляется в том порядке, в котором они найдены в словаре. Убедитесь, что любые ресурсы, на которые можно ссылаться, определены в коллекции ресурсов до их запроса. При необходимости можно обойти строгий порядок создания ссылок ресурсов. Для этого следует использовать Расширение разметки DynamicResource для ссылки на ресурс во время выполнения. Однако следует учитывать, что использование этого способа DynamicResource может привести к снижению производительности. Дополнительные сведения см. в разделе Общие сведения о ресурсах.

<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>


Полный пример см. в разделе Пример определения ресурсов.

Windows Vista

Среды .NET Framework и .NET Compact Framework поддерживают не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

.NET Framework

Поддерживается в версиях: 3.5, 3.0
Показ: