FrameworkElement.Resources 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
로컬로 정의된 리소스 사전을 가져옵니다. 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 속성 참조는 인라인이며 문자열 키가 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"];
}
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 Resources 컬렉션에 표시되는 항목이 런타임에 사용할 수 있는 XAML 정의 리소스 전체가 아닐 수도 있습니다. ResourceDictionary에 대한 MergedDictionaries 속성의 영향으로 인해 런타임에 다른 리소스를 사용할 수 있습니다. MergedDictionaries 값은 기본 XAML 컨트롤 템플릿의 리소스와 같이 시스템에서 정의한 리소스와 같은 다른 사전을 도입할 수 있습니다. 런타임 테마별 리소스는 유사한 ThemeDictionaries 속성에서도 사용할 수 있습니다. 런타임에 Resources 컬렉션에 액세스하고 Item 인덱서 또는 Lookup 메서드를 사용하여 특정 키를 쿼리하는 경우 이러한 리소스에 액세스하고 검색할 수 있습니다. 자세한 내용은 ResourceDictionary 및 XAML 리소스 참조를 확인하세요. 또한 Application.Resources는 앱의 모든 XAML 참조에 사용할 수 있는 리소스를 제공하므로 지정된 FrameworkElement.Resources 사전에서 리소스를 확장할 수 있습니다.