Blog Content

    티스토리 뷰

    66.SilverLight3 - Resource

    반응형
    Resource
    - 자바스크립트 파일, 비디오/오디오 파일등 SilverLight 어플리케이션에 사용되는 바이너리 데이터를 의미,
       XAP 파일로 압축 형태로 클라이언트로 전송되므로 배포가 간편합니다.

    - 스타일과 템플릭 적용을 위한 XAML 영역


    Resource 속성
    - Build Action 설정하여 리소스 패키지 방식 설정 가능

    None(없음) - dll, xap에 리소스 포함하지 않음
    Content(내용) - 프로젝트에 xap에 리소스 포함
    Resource(리소스) - dll 파일에 리소스 포함

    FrmMergedResourceDictionary.xaml [ 외부 리소스 ]
    1. 해당 프로젝트에서 파일을 추가합니다.
        Silverlight Resource Dictionary 추가 ( FrmMergedResourceDictionary.xaml )

    [그림 66-1]


    2. 추가한 Silverlight Resource Dictionary 에서 프로젝트에 적용하기 위해 코드를 작업합니다.
        전체 코드를 지우고 다시 작성합니다.

    <ResourceDictionary

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

        <SolidColorBrush Color="Firebrick" x:Key="myFire"></SolidColorBrush>

        <SolidColorBrush Color="LightBlue" x:Key="myLightBlue"></SolidColorBrush>

        <SolidColorBrush Color="Green" x:Key="myGreen"></SolidColorBrush>

    </ResourceDictionary>


    리소스 x:Key 를 이용합니다.

    메인페이지에서는 내부 리소스를 정의/적용, 외부리소스 적용하는 예제입니다.
    MainPage.xaml
    먼저 외부리소스를 사용하기 위해서는 해당 페이지에 리소스 파일을 정의 해주셔야 합니다.

    [그림 66-2]

    파란색 영역에 위에서 작성한 리소스 파일의 경로를 지정합니다.

    <UserControl.Resources>

            <ResourceDictionary>

                <ResourceDictionary.MergedDictionaries>

                    <ResourceDictionary Source="FrmMergedResourceDictionary.xaml">

                    </ResourceDictionary>

                </ResourceDictionary.MergedDictionaries>

            </ResourceDictionary>

    </UserControl.Resources>


    외부 리소스를 정의 했습니다. 이제 내부(해당 페이지)리소스를 정의합니다.

    <Grid x:Name="LayoutRoot" Background="White">

        <!--/ -->

        <Grid.Resources>

            <SolidColorBrush x:Key="myColor" Color="Silver" Opacity="0.8">

            </SolidColorBrush>

        </Grid.Resources>

    </Grid>


    외부/내부에 정의한 리소스를 적용합니다. ( 리소스에서 입력한 키 값을 불러와 적용 )
    MainPage.xaml [ 전체 소스 ]

    <UserControl x:Class="ResourceDictionary.MainPage"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        mc:Ignorable="d"

        d:DesignHeight="300" d:DesignWidth="400"> 

        <!--[!] -->

        <UserControl.Resources>

            <ResourceDictionary>

                <ResourceDictionary.MergedDictionaries>

                    <ResourceDictionary Source="FrmMergedResourceDictionary.xaml">

                    </ResourceDictionary>

                </ResourceDictionary.MergedDictionaries>

            </ResourceDictionary>

        </UserControl.Resources>

       

        <Grid x:Name="LayoutRoot" Background="White">

            <!--/ 의-->

            <Grid.Resources>

                <SolidColorBrush x:Key="myColor" Color="Silver" Opacity="0.8">

                </SolidColorBrush>

            </Grid.Resources>

            <!-- -->

            <StackPanel>

                <!--[1] -->

                <TextBlock Text="" Foreground="DodgerBlue"></TextBlock>

                <!--[2] /내부 -->

                <TextBlock Text="Godffs" Foreground="{StaticResource myColor}"></TextBlock>

                <!--[3] 소스 -->

                <TextBlock Text="FireColor" Foreground="{StaticResource myFire}">

                </TextBlock>

                <TextBlock Text="LightBlue" Foreground="{StaticResource myLightBlue}">

                </TextBlock>

                <!--[4] C# -->

                <TextBlock x:Name="lblRed" Text="Godffs.tistory.com"></TextBlock>

                <TextBlock x:Name="lblBlue" Text="Wow"></TextBlock>

            </StackPanel>

        </Grid>

    </UserControl>


    4번째 있는 코드 비하인드 페이지에서 코드로 리소스를 사용하기 위한 방법입니다.
    MainPage.xaml.cs

    namespace ResourceDictionary

    {

        public partial class MainPage : UserControl

        {

            public MainPage()

            {

                InitializeComponent();

                this.Loaded += new RoutedEventHandler(MainPage_Loaded);

            }

     

            void MainPage_Loaded(object sender, RoutedEventArgs e)

            {

                //[1]

                this.lblRed.Foreground =

                     (this.LayoutRoot.Resources["myColor"] as SolidColorBrush);

                //[2]

                this.lblBlue.Foreground = this.Resources["myGreen"] as SolidColorBrush;

            }

        }

    }


    결과화면

    [그림 66-3]



    반응형

    'Silverlight' 카테고리의 다른 글

    68.SilverLight3 - Template  (0) 2009.12.03
    67.SilverLight3 - Style  (0) 2009.12.03
    65.SilverLight3 - Calendar / DatePicker  (1) 2009.12.02
    64.SilverLight3 - Tab  (0) 2009.12.02
    63.SilverLight3 - Slider  (0) 2009.12.02

    Comments