uwp
UWP의 리소스 (StaticResource / ThemeResource) 및 ResourceDictionary
수색…
소개
새로운 Windows 10 응용 프로그램에는 XAML 코드 또는 코드 내에서 리소스를 참조하는 여러 가지 방법이 있습니다. 우선 액세스 가능한 장소에서 리소스를 선언해야합니다. 쉬운 방법은 현재 페이지에서 ResourceDictionary
를 컨텍스트로 선언하는 것입니다.
1. 자원 사전
MainPage.xaml의 스 니펫
<Page x:Class="MyNewApp.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:MyNewApp" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Page.Resources> <!-- Creates a resource dictionary in the page context --> <ResourceDictionary> <!-- This is a solid color brush resource NOTE: Each resource inside a resource dictionary must have a key --> <SolidColorBrush x:Key="ColorRed">Red</SolidColorBrush> </ResourceDictionary> </Page.Resources> <!-- Using ThemeResource in here to access a resource already defined --> <Grid Background="{ThemeResource ColorRed}"> </Grid> </Page>
2. 글로벌 리소스
리소스 사전은 선언 된 컨텍스트 내에서만 액세스 할 수 있으므로 다른 페이지에서 한 페이지 컨텍스트로 선언 된 리소스를 참조하려는 경우 리소스 사전을 찾을 수 없습니다. 따라서 우리가 프레임 워크와 함께 제공되는 것과 같이 전역 자원을 정의해야한다면 App.xaml에서 할 수 있습니다
App.xaml의 스 니펫
<Application x:Class="MyNewApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" RequestedTheme="Dark"> <Application.Resources> <ResourceDictionary> <SolidColorBrush x:Key="ColorRed">Red</SolidColorBrush> </ResourceDictionary> </Application.Resources> </Application>
이 방법으로 우리는 우리 앱의 ColorRed
색상 리소스에 액세스 할 수 있습니다. 그러나 잠깐, 우리는 우리의 모든 애플 리케이션의 리소스와 그 작은 파일에 감염되고 싶지 않아! 그래서 우리는 MergedDictionaries
3. 병합 된 사전
거의 대부분 상황은 조금 더 복잡하고 확장 성을 지원하기 위해 우리는 여러 것을 분리해야합니다. 그래서 우리는 서로 다른 리소스 사전을 포함하는 다양한 파일을 정의 할 수 있습니다. 즉, UI 컨트롤의 테마 리소스, 텍스트 리소스 등을 정의한 다음 App.xaml 파일에 이들을 모두 병합합니다.
App.xaml의 스 니펫
<Application x:Class="MyNewApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" RequestedTheme="Dark"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/Assets/Themes/GeneralStyles.xaml"/> <ResourceDictionary Source="/Assets/Themes/TemplatedControls.xaml"/> <ResourceDictionary Source="/Assets/Strings/Texts.xaml"/> <ResourceDictionary Source="/Assets/Strings/ErrorTexts.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
자산 폴더 [Add -> New Item]을 마우스 오른쪽 버튼으로 클릭하여 새 사전 파일을 만들 수 있습니다.
4. 리소스 액세스
선언 된 리소스에 액세스해야하므로 XAML 코드에서 {ThemeResource ResourceKey}
또는 {StaticResource ResourceKey}
코드를 사용합니다.
to be continued later.