내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

FrameworkElement.Resources 속성

2013-12-13

로컬로 정의된 리소스 사전을 가져옵니다. XAML에서 XAML 암시적 컬렉션 구문을 통해 frameworkElement.Resources 속성 요소의 자식 개체 요소로 리소스 항목을 설정할 수 있습니다.

Namespace:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)
XMLNS for XAML: xmlns에 매핑되지 않습니다.

public ResourceDictionary Resources { get; set; }
<frameworkElement>
  <frameworkElement.Resources>
    oneOrMoreResourceElements
  </frameworkElement.Resources>
</frameworkElement>

XAML 값

oneOrMoreResourceElements

각각 리소스를 만들고 정의하는 하나 이상의 개체 요소입니다. ResourceDictionary 내의 각 리소스 속성 요소에는 특성으로 지정된 고유 키(일반적으로 x:Key)가 있어야 합니다. 이 키는 ResourceDictionary에서 값을 검색할 때 사용됩니다.

속성 값

형식: System.Windows.ResourceDictionary
현재 로컬로 정의된 리소스 사전(키를 사용하여 각 리소스에 액세스할 수 있음)입니다.

XAML에서 완전히 또는 부분적으로 정의할 수 있는 리소스 사전은 대개 Resources 속성에 대한 XAML 속성 요소를 통해 만들어지며, 일반적으로 응용프로그램의 개별 페이지에 대한 루트 또는 Application 자체(사용자 지정된 Application을 사용 중인 경우 파생 클래스일 수 있음)에 있습니다. 리소스 사전을 XAML의 루트 수준에 두면 XAML 페이지에 정의된 개체 트리의 개별 자식 개체에서 범위 내의 참조 리소스를 보다 쉽게 예측할 수 있습니다.

XAML 정의 리소스 사전에서 만든 리소스는 Resources 값을 가져온 후 ResourceDictionary API를 호출하여 코드에서 참조할 수 있지만, 사전을 선언하는 개체가 Loaded를 발생하고 적용된 템플릿에서 사전 조회가 다르게 동작한다는 것을 인식하기 전까지는 XAML에서 만든 리소스에 액세스할 수 없습니다.

속성 값의 내부 ResourceDictionary 형식은 코드를 사용하여 사전 내에서 리소스를 추가, 제거 또는 쿼리하는 데 필요한 멤버를 지원합니다.

여기에 나와 있는 XAML 구문에는 ResourceDictionary 클래스에 대한 개체 요소는 포함되어 있지 않습니다. 이 구문은 암시적인 XAML 컬렉션 구문의 예입니다. 컬렉션 요소를 나타내는 태그는 생략해도 됩니다. 컬렉션에 항목으로 추가되는 요소는 해당 내부 형식이 컬렉션 Add 메서드를 지원하는 속성에 대한 속성 요소의 자식 요소로 지정됩니다.

XAML에서 ResourceDictionary 개체 요소는 명시적으로 선언해야 하는 경우는 개체에서 병합된 리소스 사전을 지원하려는 경우입니다. 일반적으로 XAML 루트에서만 수행됩니다.

XAML 태그에서 리소스를 사용하려는 경우 xmlns 선언을 통해 XAML 언어의 XAML 네임스페이스를 매핑해야 합니다. 일반적으로 이것을 x: 접두사로 참조하세요. 태그에 정의된 각 리소스는 고유 키 값을 가져야 하기 때문에 이 작업이 필요합니다. Key는 XAML 언어/x:네임스페이스에 정의됩니다. 또한 Key는 몇 가지 특수한 시나리오를 제외하고는 Windows Phone에 대한 리소스 키를 지정하는 데 일반적으로 사용하는 방법입니다. XAML 언어의 XML 네임스페이스를 x: 접두사에 매핑하는 작업은 Windows Phone에 대한 XAML의 루트 요소를 생성하는 대부분의(모두는 아님) 도구에 의해 자동으로 수행됩니다.

다음 XAML은 한 가지 항목인 DataTemplate을 포함하는 단순 Resources 사전의 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>


다음 예제에서는 Resources 속성에 액세스하는 일반적인 코드를 보여 줍니다. 이 예제에서 Resources 속성 참조는 인라인 상태이며 바로 뒤에 문자열 키 RainbowBrush를 사용하여 ResourceDictionary 항목을 검색하는 인덱서가 사용됩니다. 명시적 캐스트로, 항목에 대해 ResourceDictionary에서 반환하는 값이 항상 일반 개체입니다.


void SetBGByResource(object sender, RoutedEventArgs e)
{
  Button b = sender as Button;
  b.Background = (Brush)this.Resources["RainbowBrush"];
}


ResourceDictionary를 사용하는 다른 코드 예제는 ResourceDictionary를 참조하세요.

Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2014 Microsoft