다음을 통해 공유


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"];
}
<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는 C#으로 프로그래밍하는 경우 Visual C++ 구성 요소 확장(C++/CX) 또는 IDictionary<TKey,TValue> 템플릿을 사용하여 프로그래밍하는 경우 IMap<K,V> 템플릿을 기반으로 하는 키 컬렉션입니다. 코드에서 사전 및 해당 항목을 사용하는 데 사용하는 API는 기본 템플릿을 반영하므로 앱에 사용하는 언어를 반영합니다.

애플리케이션 에는 앱에서 둘 이상의 페이지에서 액세스할 수 있어야 하는 리소스를 저장하는 데 사용할 수 있는 Resources 속성도 있습니다. 사용자 지정 컨트롤에 대한 리소스는 템플릿화된 컨트롤의 기본 프로젝트 템플릿에 의해 만들어진 별도의 XAML 파일에 저장할 수도 있습니다.

XAML Resources 컬렉션에 표시되는 항목이 런타임에 사용할 수 있는 XAML 정의 리소스 전체가 아닐 수도 있습니다. ResourceDictionary에서 MergedDictionaries 속성의 영향으로 인해 런타임에 다른 리소스를 사용할 수 있습니다. 값은 MergedDictionaries 기본 XAML 컨트롤 템플릿의 리소스와 같이 시스템에서 정의한 리소스와 같은 다른 사전을 도입할 수 있습니다. 런타임 테마별 리소스는 유사한 ThemeDictionaries 속성에서도 사용할 수 있습니다. 런타임에 Resources 컬렉션에 액세스하고 인덱서 또는 Lookup 메서드를 사용하여 Item 특정 키를 쿼리하는 경우 이러한 리소스에 액세스하여 검색할 수 있습니다. 자세한 내용은 ResourceDictionary 및 XAML 리소스 참조를 확인하세요. 또한 Application.Resources는 앱의 모든 XAML 참조에 사용할 수 있는 리소스를 제공하여 지정된 FrameworkElement.Resources 사전에서 리소스를 확장할 수 있습니다.

적용 대상

추가 정보