티스토리 뷰

반응형

Xamarin.Forms (PCL)에서 전체 앱에 적용되는 스타일을 선언하는 방법에 대해 소개합니다.
해당 기능은 Xamarin.Forms 2.3.1에서 추가된 기능이므로 이전 버전에서는 사용할 수 없습니다.

  1. Xamarin.Forms PCL 프로젝트를 생성합니다.
  2. 스타일을 추가할 위치에 ContentPage를 추가합니다. 여기에서는 Common 이란 이름으로 생성하였습니다.
  3. ContentPage.xaml파일을 열고 ContentPage를 ResourceDictionary로 변경해줍시다. 추가적으로 원하는 스타일을 추가해주세요.
    <!-- ContentPage를 ResourceDictionary로 변경 -->
    <ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="xamarinGlobalStyle.Assets.Styles">
      <!-- 원하는 공용 Stlye 추가 -->
      <Style TargetType="Label">
        <Setter Property="TextColor" Value="Red" />
      </Style>
    </ResourceDictionary>
  4. ContentPage.xaml.cs파일을 열고 ContentPage를 ResourceDictionary로 변경해주세요.
    using Xamarin.Forms;
    using Xamarin.Forms.Xaml;
    
    namespace xamarinGlobalStyle.Assets.Styles
    {
        //ContentPage를 ResourceDictionary로 변경
        [XamlCompilation(XamlCompilationOptions.Compile)]
        public partial class Common : ResourceDictionary
        {
            public Common()
            {
                InitializeComponent();
            }
        }
    }
  5. 이제 App.xaml파일을 열고 다음과 같이 MergeWith를 통해 위에서 추가한 Style을 지정해주세요.
    <?xml version="1.0" encoding="utf-8"?>
    <Application xmlns="http://xamarin.com/schemas/2014/forms" 
                xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
                x:Class="xamarinGlobalStyle.App"
                xmlns:styles="clr-namespace:xamarinGlobalStyle.Assets.Styles">
        <Application.Resources>
            <!-- MergeWith를 통해 Style추가하면 앱 전체에 스타일이 적용됩니다 -->
            <ResourceDictionary MergedWith="styles:Common">
            </ResourceDictionary>
        </Application.Resources>
    </Application>
  6. 이제 제대로 적용이 되었는지 확인해 봅시다.
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"  
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"      
                 x:Class="xamarinGlobalStyle.Page">
            <!-- 제대로 적용되었다면 아래 글씨는 붉은색으로 나타납니다. -->
            <Label Text="스타일이 적용되었나요?" />
    </ContentPage>


댓글