NET MAUI - XAML 애플리케이션 전체 리소스 생성 및 사용
2022. 7. 19. 00:00ㆍMAUI
반응형
리소스와 스타일을 통해 XAML 페이지 단위에서 반복되는 코드를 줄일수 있다.
그렇다면 여러 XAML 페이지에서 사용가능 하게 하려면 어떻게 해야 할까
아래 그림을 보자.
View(Button, Label ...) 는 Layout Pannel 의 자식이고
Layout Pannel 은 Page 의 자식이다.
이런 Page 들은 Application 밑에 존재 한다.
Application Level 에서 Resource 와 Styles 정의
<Application.Resources>
<Color x:Key="MyTextColor">Blue</Color>
</Application.Resources>
.NET MAUI가 리소스 또는 스타일을 찾는 방법
<Label TextColor="{StaticResource MyTextColor}" ... />
아래 이미지는 리소스를 찾는 순서를 요약한 것이다.
Application 과 ContentPage 에 같은 Key 의 Resource 가 존재 한다면?
<Application.Resources>
<x:String x:Key="msg">Two</x:String>
</Application.Resources>
<ContentPage.Resources>
<x:String x:Key="msg">One</x:String>
</ContentPage.Resources>
...
<Label Text="{StaticResource msg}">
우선순위가 ContentPage 가 Application 높기 때문에 Text 는 One 이라는 값으로 setting 된다.
예제) 이전예제를 복사하여 새로운 폴더에 복사하자
예제는 Xaml/ApplicationResource 폴더를 기준으로 한다.
MainPage.xaml 에서 다음 소스를 잘라내자
...
<Color x:Key="bgColor">#C0C0C0</Color>
<Color x:Key="fgColor">#0000AD</Color>
<x:Double x:Key="fontSize">22</x:Double>
<Style x:Key="baseLabelStyle" TargetType="Label">
<Setter Property="TextColor" Value="{StaticResource fgColor}" />
<Setter Property="FontSize" Value="{StaticResource fontSize}" />
</Style>
<Style x:Key="infoLabelStyle" TargetType="Label" BasedOn="{StaticResource baseLabelStyle}">
<Setter Property="FontAttributes" Value="Bold" />
</Style>
...
App.xaml 파일을 열고 다음을 추가 하자
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
...>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Colors.xaml" />
<ResourceDictionary Source="Resources/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
<Color x:Key="bgColor">#C0C0C0</Color>
<Color x:Key="fgColor">#0000AD</Color>
<x:Double x:Key="fontSize">22</x:Double>
<Style x:Key="baseLabelStyle" TargetType="Label">
<Setter Property="FontSize" Value="{StaticResource fontSize}" />
</Style>
<Style x:Key="infoLabelStyle" BasedOn="{StaticResource baseLabelStyle}" TargetType="Label">
<Setter Property="FontAttributes" Value="Bold" />
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
이제 모든 page 에 적용되는 Resource 를 생성 하였다.
실행
관련영상
반응형
'MAUI' 카테고리의 다른 글
NET MAUI - XAML tab navigation (0) | 2022.07.21 |
---|---|
NET MAUI - XAML flyout navigation (0) | 2022.07.20 |
NET MAUI - XAML 스타일을 사용하여 일관된 UI 만들기 (0) | 2022.07.18 |
.NET MAUI - XAML 동적 리소스 사용 및 업데이트 (0) | 2022.07.15 |
.NET MAUI - XAML 리소스 정의 및 사용 (0) | 2022.07.14 |