.Net Project/SilverLight 3.0

54장 바인딩 컨트롤(Grid.Resource)

Magic_kit 2009. 12. 3. 09:35
반응형
  Grid.Resource
- 데이터 바인딩 기본적으로 사용하는 Grid 컨트롤
- 바인딩은 실버라이트 버젼이 올라갈수능 기능이 강화되고 있으므로, 충분히 익히고 사용할 
  가치가 있습니다.
- 바인딩을 적용하고자 하는 컨트롤은 파생되어야 하며, 바인딩 적용하고 하는 컨트롤의 프로퍼티는
   엔터티로 적용 되어야 사용 가능합니다.
  Grid.Resource.Xaml

<UserControl x:Class="RiaResource.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">

 

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

        <Grid.Resources>

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

        </Grid.Resources>

        <StackPanel>

            <TextBlock Text="Kim Yong Won"
                       Foreground
="Blue" FontSize="20"></TextBlock>

            <TextBlock Text="Red Color"
                     
 Foreground="{StaticResource myColor}"
                       FontSize
="20"></TextBlock>

            <TextBlock Text="Red Color"
                       Foreground="{StaticResource myColor}" 
                       FontSize
="20"></TextBlock>

        </StackPanel>

    </Grid>

</UserControl> 

  다음과 같은 위의 바인딩 내용을 외부에서 적용하기


1. FrmMergeResourceDictionar.Xaml 생성하여 다음 코드 추가

<ResourceDictionary 

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

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

    <SolidColorBrush Color="Red" x:Key="myRed"></SolidColorBrush>

    <SolidColorBrush Color="Blue" x:Key="myBlue"></SolidColorBrush>   

</ResourceDictionary> 

2. FrmMain 페이지에서 리소스파일을 외부에서 가져와서 사용하기 위하여 추가 

<UserControl x:Class="RiaResource.SilverlightControl1"

    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
="FrmMergeResourceDictionar.xaml"></ResourceDictionary>

            </ResourceDictionary.MergedDictionaries>

        </ResourceDictionary>

    </UserControl.Resources>

   

    <StackPanel>

        <TextBlock Text="RedColor"
                  
 Foreground="{StaticResource myRed}"></TextBlock>

        <TextBlock Text="BlueColor"
                 
 Foreground="{StaticResource myBlue}"></TextBlock>

    </StackPanel>   

</UserControl>

  3. 비하인드 코드에서 리소스 적용하는 방법

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

 

namespace RiaResource

{

    public partial class SilverlightControl2 : UserControl

    {

        public SilverlightControl2()

        {

            InitializeComponent();

 

            this.Loaded += new RoutedEventHandler(SilverlightControl2_Loaded);

        }

 

        void SilverlightControl2_Loaded(object sender, RoutedEventArgs e)

        {

            //[1] Grid 리소스 사용 하는 방법

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

 

            //[2] 외부에 정의된 리소스 사용하기

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

        }

    }

} 






반응형