시작하세요.  Silverlight

#7-1 Layout

 이번 강좌에서는 Silverlight 에서 가장 기본이 되는 Layout 에 대해 알아 보도록 하겠습니다. Layout 은 위치를 를 잡아 주는 아주 중요한 컨트롤 입니다. 레이아웃 컨트롤의 종류는 기본적으로  Canvas , Grid ,StackPanel 등이 있고 Silverlight Toolkit 에 포함된 확장 컨트롤인 WrapPanel, DockPanel 등이 대표적인 레이아웃 컨트롤 이라 할 수 있습니다.

# Canvas Control
 레이아웃 컨트롤은 자식 컨트롤의 위치를 잡는 방법에서 큰 차이 점이 있습니다. 그중 Canvas 컨트롤에 대해 알아 보도록 하겠습니다.
 
 Silverlight 가 막 세상에 나왔을때는 지금과 같은 많은 컨트롤들이 지원 되지는 않았습니다. 그때는 레이아웃 컨트롤 역시 마찬가지로 Canvas 밖에 지원하지 않았습니다. 이처럼 가장 기본이 되었던 Canvas 컨트롤의 특징은 자식 UIElement 들의 위치를 잡을때 상단과 좌측을 기준으로 위치를 잡는것이 큰 특징 입니다.


사용자 삽입 이미지

Canvas 는 <Canvas/> 태그를 사용하고 자식 UIElement 의 위치는 Canvas.Top , Canvas.Left 속성을 이용합니다.
    <Canvas Background="LightGray">
        <Button Width="100" Height="30" Canvas.Left="100" Canvas.Top="50" Content="Click!!"/>
    </Canvas>

사용자 삽입 이미지

모든 XAML 들은 동적으로 생성이 가능한데 , Canvas 역시 동적으로 생성이 가능합니다. Canvas 컨트롤을 동적으로 생성에 기본 레이아웃 컨트롤인 LayoutRoot 컨트롤의 자식으로 추가해 보겠습니다.( 간혹 LayoutRoot 를 지워 버리시는 분이 있으신데.... 좋지 않은 행동입니다.)

Canvas can = new Canvas();
LayoutRoot.Children.Add(can);

레이아웃 컨트롤은 다수의 자식 UIElement 들을 포함시킬 수 있는 컨트롤 입니다. Canvas 컨트롤 역시 다수의 자식 컨트롤을 추가 할수 있는데 동적으로 자식의 컨트롤을 추가하는 방법은  다음과 같습니다.

Button btn = new Button();
btn.Width = 100;
btn.Height = 30;
btn.Content = "Click!!";

can.Children.Add(btn);

이렇게 레이아웃 컨트롤에 있는 Children 에 자식 UIElement  를 추가하면 됩니다. Canvas 에 자식이 추가되게 되면 기본적으로 자식은 (0,0) 좌표에 위치 하게 됩니다.

사용자 삽입 이미지
이때 자식 UIElement 의 위치를 잡기위해선 다음과 같은 동적 코딩으로 변경 할 수 있습니다.

Canvas.SetLeft(btn, 100);
Canvas.SetTop(btn, 50);


사용자 삽입 이미지

Canvas 에 추가된 자식 UIElement 들은 레어어와 같이 계층적으로 들어 가게 됩니다.  이 계층은 마지막에 추가된것이 가장 위로 가는 특징이 있는데 XAML 에서 다음과 같이 자식의 UIElement 추가 되었을 때는 마지막에 들어간 자식이 가장 화면 위에 나타 납니다. 이것은 Canvas 뿐만 아니라 자식을 갖는 모든 컨트롤이 공통 됩니다.

사용자 삽입 이미지
하지만 이 계층은 임위로 그 위치를 지정 할 수가 있는데요. Zindex 가 그 역할을 합니다. Zindex 의 값은 정수형 값이 들어 가면 이수의 크기가 클수록 가장위로 올라 갑니다.

<Canvas>
            <Rectangle Width="100" Height="100"
                       Fill="Red" Canvas.Left="150"
                       Canvas.Top="100" Canvas.ZIndex="1"></Rectangle>
            <Rectangle Width="100" Height="100"
                       Fill="Blue" Canvas.Left="190"
                       Canvas.Top="140" Canvas.ZIndex="2"></Rectangle>
            <Rectangle Width="100" Height="100"
                       Fill="Yellow" Canvas.Left="220"
                       Canvas.Top="170" Canvas.ZIndex="1"></Rectangle>
</Canvas>


사용자 삽입 이미지

동적으로도 Canvas.SetZIndex(UIElement element , int value) 를 이용하면 변경 할수 있습니다.



2010/01/05 17:53 2010/01/05 17:53
inde 이 작성.

시작하세요.  Silverlight

#6-2 App.xaml.cs

앞서 강좌에서 App.xaml.cs 이 Silverlight Application 의 시작과 끝을 관리 한다고 설명하였는데요. 오늘은 이 App.xaml.cs 를 이용해서 HTML 페이지와의 상호 매개변수를 전달하는것을 알아 보도록 하겠습니다.

# InitPrams 사용하기
Silverlight Application은 html과 상호 매개변수를 전달할때 <object> 태그의 파라미터를 통해서
받을 수 있습니다. 이 파라미터를 당담하는 것이 바로 InitParams 입니다. 이 InittParams 는  param1=value1,param2=value2 와 같은 형식으로 보내어 지고 Silverlight 에서는 IDictionary<string,string> 형으로 전달되어 집니다.  사용법은 다음과 같습니다.

[HTML - <object> 태그]

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
    <param name="source" value="ClientBin/SilverlightApplication2.xap"/>
    <param name="onError" value="onSilverlightError" />
    <param name="background" value="white" />
    <param name="minRuntimeVersion" value="3.0.40818.0" />
    <param name="autoUpgrade" value="true" />
    <param name="initPrams" value="user=inde,pwd=1234" />
</object>



[App.xaml.cs]
public static IDictionary InitPrams; 
private void Application_Startup(object sender, StartupEventArgs e)
{
    InitPrams = e.InitParams;
    this.RootVisual = new MainPage();
}

IDictionary 변수를 선언 합니다. 다른 UserControl 에서도 참조를 하기위해 static 으로 선언 합니다.

[MainPage.xaml]
<?xml version="1.0"?>
<UserControl x:Class="SilverlightApplication2.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" Width="640" Height="480">
  <Grid x:Name="LayoutRoot">
        <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
            <TextBlock Text="사용자의 아이디는  "/>
            <TextBlock x:Name="txtUser" FontWeight="Bold"/>
            <TextBlock Text="  비밀번호는  "/>
            <TextBlock x:Name="txtPwd" FontWeight="Bold"/>
            <TextBlock Text="  입니다."/>
        </StackPanel>
    </Grid>
</UserControl>


[MainPage.xaml.cs]

using System.Windows;
using System.Windows.Controls;
using System.Collections.Generic;

namespace SilverlightApplication2
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(MainPage_Loaded);    
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                txtUser.Text = App.InitPrams["user"];
                txtPwd.Text = App.InitPrams["pwd"];
            }
            catch (KeyNotFoundException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        
    }
}



[Silverlgiht 샐행화면]

사용자 삽입 이미지

자 지금 까지 InitParams 를 이용한 사용자 매개변수 받기 였습니다.
2009/12/22 16:22 2009/12/22 16:22
inde 이 작성.

시작하세요.  Silverlight

#6-1 App.xaml.cs

앞서 # 프로젝트 구성 살펴보기 강좌에서 App.xaml.cs 에 대한 대용을 간단하게 살펴 보았는데 이번강좌는 이 App.xaml.cs 에 대해 좀더 자세하게 살펴 보도록 하겠습니다.


# Silverlight 시작과 끝

App.xaml.cs 는 Silverlight Application 의 시작과 끝을 관리 합니다. App.xaml.cs 은 아래과 같은 코드로 이루어져 있는데요.

public partial class App : Application
    {

        public App()
        {
            this.Startup += this.Application_Startup;
            this.Exit += this.Application_Exit;
            this.UnhandledException += this.Application_UnhandledException;

            InitializeComponent();
        }

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            this.RootVisual = new MainPage();
        }

        private void Application_Exit(object sender, EventArgs e)
        {
            
        }
        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            // 응용 프로그램을 디버거 외부에서 실행 중인 경우 브라우저의 예외 메커니즘을
            // 사용하여 예외를 보고합니다. IE에서는 예외가 상태 표시줄에 노란 경고 
            // 아이콘으로 표시되고 Firefox에서는 스크립트 오류가 표시됩니다.
            if (!System.Diagnostics.Debugger.IsAttached)
            {

                // 참고: 예외가 throw된 후 처리되지 않아도 응용 프로그램은 계속
                // 실행됩니다. 
                // 프로덕션 응용 프로그램의 경우 이 오류 처리는 웹 사이트로 오류를 보고하고 응용 프로그램을 
                // 중지하는 다른 방식으로 대체되어야 합니다.
                e.Handled = true;
                Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
            }
        }
        private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
        {
            try
            {
                string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
                errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");

                System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
            }
            catch (Exception)
            {
            }
        }
    }




위코드에서 눈여겨 보실것이 바로 Application_Startup(object sender, StartupEventArgs e) 와 Application_Exit(object sender, EventArgs e) 입니다.  Application_Startup 는 Silverlight Application 이 시작 될때 호출 됩니다. Application_Exit 는 Silverlight Application 이 종료 될때 호출 됩니다. 확인을 위해 아래와 같이 수정 합니다.

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            MessageBox.Show(" Silverlight Application 을 시작 합니다.");
            this.RootVisual = new MainPage();
        }

        private void Application_Exit(object sender, EventArgs e)
        {
            MessageBox.Show(" Silverlight Application 을 종료 합니다.");
        }


자! 이제 디버깅을 실행하여 Silverlight Application 을 실햅 시킵니다. 아래와 같이 MainPage.xaml 이 나타나기 전에 메세지가 나타나고, 부라우져를 닫으면 메세지가 나타나는 것을 보실수 있습니다.

사용자 삽입 이미지
.
2009/12/22 12:04 2009/12/22 12:04
inde 이 작성.

시작하세요.  Silverlight

#5 Silverlight.js  HTML문서에 삽입하기

앞서 설명 드렸던 것처럼 Silverlight Application 은 <object> 태그를 이용하여 HTML 문서에 삽입이 가능합니다. 하지만 Silverlight Tools 에서 제공하는 Silverlight.js 를 이용한다면 더욱 쉽게 Silverlight Application 삽입이 가능합니다. 


# Silverlight.js 구하기
 
Silverlight.js 는 Silverlight 프로젝트 생성시 만들어 지는 WebServer 디렉토리에 기본적으로 생성 됩니다.

사용자 삽입 이미지
위와 같이 체크하여 Silverlight 프로젝트를 생성하면 디버깅을 할수 있는 Webserver 가 자동으로 생성 됩니다.  이때 Silverlight.js 가 같이 생성 됩니다. 아래의 솔류션 탐색기를 보시면 프로젝트명.web 트리에 Silverlight.js 를 확인 하실수 있습니다.


사용자 삽입 이미지


# Silverlight.js

Silverlight.js 는 Silverlight Application의 <object> 태그를 쉽게 삽입할수 있도록 제공하는 JavaScript 함수 입니다. 또한 Silvelright Runtime 이 새로 설치 되거나 업그레이드 되는 환경을 개선 시켜 줍니다. 예를 들어 Silverlight Runtime 이 설치가 완료 되면 자동으로 페이지를 리로드 시켜주는 기능. 현재의 PC에  런타임이 설치되어 있는지 검사
Silverlight.js 는 기본적으로 Silverlight 라는 접두사로 되어 있습니다.

Silverlight.createObject(source, parentElement, id, properties, events, initParams, userContext);
Silverlight Application 삽입에 필요한 <object> 태그를 생성 시켜 줍니다.
source:  xap 파일의 Url 주소
parentElement: 적용되어질 Element ID 네임
id: 삽일된 <object> 태그의 id 값
properties: Silverilght Plugin 의 설정값들
events: 플러그인에 추가될 이벤트
initParams: 사용자 지정 변수
userContext: 이벤트가 발생할 때 onLoad 이벤트 처리기로 전달되는 값

Silverlight.createObjectEx(params);
배열로된 단일 변수로 <object> 태그를 생성합니다. 내부적으로 Silverlight.createObject 사용합니다.
params : 배열로된 매개변수

Silverlight.default_error_handler = function(sender, args) { ... }
onError 에 대한 기본 이벤트 처리기
sender: 프러그인 자신
args: 이벤트에서 넘어온 값

Silverlight.getSilverlight(version);
매개변수로 지정된 버젼의 Runtime 을 다운로드 합니다.
version: 문자열로 이루어진 버젼 명

bool = Silverlight.isBrowserRestartRequired;
Runtime 이 설치가 완료 되었을때 새로고침 여부

bool = Silverlight.isInstalled(version);
Runtime 이 매개변수로 지정된 버젼이 설치되어져 있는지 여부

Silverlight.onGetSilverlight = function() { ... };
Runtime 의 설치관리자가 요청 되었을때의 콜백 함수

Silverlight.onSilverlightInstalled = function() { ... };
Runtime 의 설치가 완료 되었을때의 콜백 함수

Silverlight.WaitForInstallCompletion();
정기적으로 버젼을 체크한우 새로운 버젼이 있으면 설치하고 새로고침


# Silverlight.js 를 이용한 Silverlight Application 삽입하기
<script type="text/javascript" src="Silverlight.js"></script>
<div id="SilverlightApplication">
    <script type="text/javascript">
        Silverlight.createObject(
            "http://www.indreams.co.kr/test.xap",  // source(xap 파일의 url)
            SilverlightApplication,  // <object> 태그가 삽입되어질 Element id
            "slPlugin",  // <object> 태그의 Element id
            {
                width: "100%", height: "100%", background: "white",   // 플러그인 설정값
                version:"3.0.40620.0"
            },
            { onError: onSLError, onLoad: onSLLoad }, //이벤트처리
            "param1=value1,param2=value2",    //InitPrams 사용자 초기화 변구
            "context"    // context helper for onLoad handler. //onLoad 이벤트 처리기
        );
    </script>
</div>
2009/12/22 10:44 2009/12/22 10:44
inde 이 작성.

시작하세요.  Silverlight


#5 Silverlight.. HTML문서에 삽입하기 <object>

Silverlight는 플래시와 마찬가지로 HTML문서 안에 임베딩 되서 실행 됩니다. 물론 OOB 같이 그렇지 않는 경우도 있구요.(OOB 역시도 최초 HTML 문서 안에서 설치 하셔야 합니다.) Silverlight 를 HTML 에 삽입 하는 방법은 두가지가 있습니다. 바로 <object> 태그를 이용하는 방법과 Silverlight.js 이용하는 방법 입니다.


# <object> 태그로 삽입하기.

Silverlight 프로젝트를 컴파일 하게 되면은 최종적으로 xap 파일 생성이 됩니다. 이 xap 파일만 있으면 Silverlight Application 을 WebSite 에서 사용할수 있는 것이지요. <object> 태그로 html 문서안에 삽입이 가능 한데요. 이 <object> 태그는 다음과 같습니다.
 

<object data="data:application/x-silverlight-2,"
          type="application/x-silverlight-2"
          width="100%"
          height="100%">
   
    <param name="source" value="xap 파일주소"/>
    <param name="onError" value="onSilverlightError" />
    <param name="background" value="white" />
    <param name="minRuntimeVersion" value="3.0.40818.0" />
    <param name="autoUpgrade" value="true" />
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0">
      <img src="http://go.microsoft.com/fwlink/?LinkId=108181" />
    </a>
</object>

<object > 태그를 살펴 보면  data, type 속성은 이 <object> 태그의 플러그인은 Silverlight 임을 알수가
있습니다.  data="data:application/x-silverlight-2," 부분 때에 따라(클립보드로 복사한후 위지웍에디터에 삽입할때) 삭제해서 써도 무관합니다.  width, height 는 삽입되는 플러그인영역 입니다.

<object> 태그를 <param> 태그를 이용해서 파라미터 세팅이 가능합니다. Silverlight 플러그인에서 사용하는 파라미터는 다음과 같습니다.

source : xap 파일의 경로 값입니다. 예) http://www.naver.com/Silverlight/test.xap
onError : Silverlight 플러그인에서 활성화에 실패 했을때 콜백할 JavaScript 의 함수 명입니다.
background : 플로그인영역의 배경색 입니다. 예) RGB 값 #cdcdcd
minRuntimeVersion : 현재의 Silverlight Application 이 실행될 최저 Version 을 설정 합니다.
autoUpgrade : Silverlight 런타임이 업그레이드 되었을때 자동으로 업그레이드 하도록 설정 합니다. 예)true ,false
windowless : windowless 모드를 활성화 합니다. 예) true,false
initPrams : 사용자 지정 매게 변수를 받습니다" 예) url=http://naver.com,site=http://google.com,uid=inde83
enableHtmlAccess : 임베딩 되어 있는 html 문서의 DOM 접근 허용설정 예) true,false
allowHtmlPopupWindow : 팝업 접근 허용설정 예)true,false

모든 파라미터가 끝나고 </object> 를 넣어진 태그는 Silverlight 런타임이 설치되지 않았을때 출력되는 영역 입니다. 그래서 이영역에 실버라이트 설치 안내문을 넣으 시면 되겠습니다.

# <embed> 태그로 삽입하기.

요즘의 대형 포털이나 웹사이트를 보면 게시판에 글을 입력할때 위지웍에디터를 이용하는곳이 많습니다. 이 위지웍 에디터는 보안에 문제가 되는 <object> 태그를 허용하지 않을수 있습니다. 그때는 이 <embed> 태그를 이용하시면 <object> 태그가 지원하지 않는 게시판 에서도 Silverlight Application 삽입이 가능합니다.

<EMBED id=SilverlightComponent height=383 type=application/x-silverlight-2 width=480
initParams="user=inde"
enableHtmlAccess="true" autoUpgrade="true" minRuntimeVersion="3.0.40624.0"
background="black" source="
http://naver.com/Silverlight/test,xap"/>

2009/12/17 19:16 2009/12/17 19:16
inde 이 작성.

시작하세요.  Silverlight


#4 프로젝트 구성 살펴보기.

앞서 예제를 통해 Hello World 를 출력해 보았습니다. 여러분들은 이로서 Silverlight 를 사용할줄 안다~ 라고 말씀하셔도 될것 같군요. ^^
이제부터는 차근차근 자세하게 Silverlight 에 대해 이야기 하도록 하겠습니다.

Silverlight 프로젝트를 생성하게 되면은 프로젝트 폴더 안에는 많은 파일과 폴더들이 생성 되게 됩니다.

사용자 삽입 이미지

솔루션 탐색기를 살펴 보면 위와 같은 트리가 보여집니다. ① 번은 실제 Silverlight Application 파일이 포함되어 있습니다. ②번은 Silverlight Application 을 실행 하기 위한 웹서버의 내용물이 포함되어 있습니다. ② 번은 프로젝트 생성시 선택을 해야지만 생성이 됩니다.

사용자 삽입 이미지


# Silverlight 프로젝트 파일

Property 폴더에는 두가지의 파일이 존재 합니다. 바로 AppManifest.xml , AssemblyInfo.cs 파일인데요 두개의 파일은 아래와 같은 역할을 합니다.

AppManifest.xml Silverlight Application 의 전반적인 내용에 대해 명시 합니다. ( 참조 및 기타등등)
AssemblyInfo.cs 컴파일이 완료 되면 프로젝트의 내용은 dll 파일로 저장되게 되는데요. 이 저장된 dll의 어셈블리 정보를 설정 합니다.


참조 폴더는 현재의 Silverlight Application 이 참조 하고 있는 라이브러리의 목록들을 추가하거나 보관합니다.

App.xaml 파일은 프로젝트의 모든 유저 컨트롤에서 참조할수 있는 유일한 공간입니다. 이때문에 공통된 템플릿이나 스타일, 리소스 등을 선언하는 역할을 합니다.

App.xaml.cs 파일은 Silverlight Application 가 실행될때 시작과 끝을 관리 하는 곳 입니다.
이파일에 대해서는 뒤에서 좀더 자세하게 설명 하도록 하겠습니다.

MainPage.xaml 파일은 Silverlight Application이 실행될때 가장 기본으로 보이는 화면입니다. 기본이 되는 화면은 App.xaml.cs 에서의 실행에 따라 달라 질수 있습니다.

MainPage.xaml.cs UserControl 를 생성하게 되면은 xaml 파일과 cs 파일이 한쌍을 이루어 생성 되게 됩니다. MainPage.xaml.cs 파일은 MainPage.xaml 의 비하인드 코드 입니다.


# Silverlight Application 디버깅 파일

Silverlight Application 은 기본적으로 웹부라우져 위에서 실행이 됩니다. 물론 그렇지 않는경우(OOB) 도 있지만 대부분의 Silverlight Application은 웹문서 안에서 실행이 됩니다. 이때문에 IIS Webserver 가 추가되어 실제 웹서비스가 되는것 처럼 실행 시켜 줍니다.

ClientBin Silverlight 프로젝트가 컴파일 되면은 xap 파일로 변환이 되는데 이 최종 Silverlight 파일인 xap 파일이 이곳에 저장 됩니다.
프로젝트명TestPage.aspx Silverlight Host 태그를 Asp .Net 으로 삽입 합니다.
프로젝트명TestPage.html Silverlight Host 태그를 html로 삽입 합니다.
Silverlight.js Silverlight 를 삽입하기 위한 JavaScript 도구들이 포함되어 있습니다.
2009/12/16 20:24 2009/12/16 20:24
inde 이 작성.

시작하세요.  Silverlight


#3 Hello World.

모든 프로그래밍을 처음 접하게 되면 꼭 하고 넘어가야 할것이 있습니다. 프로그래머라면 누구든 피해 갈수 없는 단한가지!! 바로 Hello World 입니다. Hello World 는 C 의 책에서 맨처음 쓰였다고 하는데요. 모든 프로그램의 시작이 이 Hello World 를 출력 함으로서 개념을 잡는것 같습니다.

자 그럼 이것 저것 묻지도 따지지도 말고 따라해주시기 바랍니다.


# 프로젝트 생성하기

Silverlight 개발을 위해서 vs2008 을 실행 합니다. 상단 메뉴에서 파일-> 새로만들기 ->프로젝트를 선택합니다. Silverlight Tools 까지 정상적으로 설치가 완료 되었다면 프로젝트에 Silverligth 텝이 추가 된것을 확인 할수 있습니다.

사용자 삽입 이미지

Silverlight 응용프로그램을 선택 합니다. (영문은 Silverlight Application) 이름과 위치를 설정한후 확인을 누룹니다.


사용자 삽입 이미지


원할한 디버깅을 위해서 ' 새 웹 사이트에서 Silverlight 응용 프로그램 호스트' 를 체크합니다.
자 Silverlight 프로젝트가 생성 되었습니다.


# XAML 코드 편집

본격적으로 Hello World 를 출력 하기 위해 XAML 코드를 편집 하겠습니다. 예제는 대충 이렀습니다.
화면에 버튼을 누르면 Hello World 라는 문장이 나타납니다.

우선 MainPage.xaml 파일을 엽니다.

사용자 삽입 이미지

파일을 열었으면 아래와 같이 Button 태그를 삽입니다.

<UserControl x:Class="SilverlightApplication7.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:DesignWidth="640" d:DesignHeight="480">
  <Grid x:Name="LayoutRoot">
        <Button Width="100" Height="30" Content="Click!!" Margin="50" VerticalAlignment="Bottom" HorizontalAlignment="Right" x:Name="HelloButton"/>
    </Grid>
</UserControl>

Silverlight 3 에서 부터는 미리보기가 숨겨져 있는데요. XAML 코드를 렌더링모습을 확인하기 위해
비주얼 디자이너를 로드 합니다.

사용자 삽입 이미지
화살표 방향에 마우를 가져가면 마우스 커서가 바뀠니다. 그때 클릭한상태로 창의 경계선을 위로 올립니다. 그러면 다음과 같은 메세지가 보이게 됩니다.

사용자 삽입 이미지
디자이너 로드 다시 시작을 누르게 되면 비주얼 디자이너가 시작하게 되는데 아래와 같이 우리가 생성만 버튼의 모습을 확인 하실수 있습니다.

사용자 삽입 이미지
자 이제 화면 이 완료 되었습니다. 이제 버튼을 눌러 Hello World 를 출력 시켜 보도록 하겠습니다.


# CS 코드 편집

사용자 삽입 이미지

MainPage.xaml.cs 파일 엽니다.  편집기에서 아래와 같이 코드를 추가 합니다.

using System.Windows;
using System.Windows.Controls;

namespace SilverlightApplication7
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            HelloButton.Click += new RoutedEventHandler(HelloButton_Click);
        }

        void HelloButton_Click(object sender, RoutedEventArgs e)
        {
            TextBlock txt = new TextBlock();
            txt.Text = "Hello World";
            txt.VerticalAlignment = VerticalAlignment.Center;
            txt.HorizontalAlignment = HorizontalAlignment.Center;
            LayoutRoot.Children.Add(txt);
        }

    }
}



# Hello World 완성!!

모든 코딩이 완료가 되었습니다. 이제는 디버그->디버깅시작을 눌러 Silverlight Application 을 실행 시킵니다. 자 이제 화면상에 Click 버튼을 클릭하면 Hello World 가 출력 되는것을 보실수 있습니다.

사용자 삽입 이미지

2009/12/16 15:55 2009/12/16 15:55
inde 이 작성.

시작하세요.  Silverlight

#2 디자인 환경 구성하기.

MS 는 ADOBE와 같은 그래픽 시장에 뛰어 들기 위해 Expression Studio 를 발매 하였습니다.

http://www.microsoft.com/expression/
사용자 삽입 이미지
Expression 은 새로운 UX 환경과 협업의 도구들로 다음과 같이 구성 되어 있습니다.
Exression blend 3 XAML 에디터
Sketch Flow 워크플로우 도구
Expression Design3 디자인 도구
Expression Encoder 3 동영상 인코딩 도구

하지만 우리는 Silverlight 만 다루기 위해 Blend 만 설치 하기로 하겠습니다.

# .Netframwork 3.5 SP1 설치 하기

Expression Blend 3 는 .Net 3.5 sp1 이상을 기반으로 두고 있기 때문에 .Net 설치를 미리 하여야 합니다.
다운로드 는 아래의 주소로 다운로드 하시면 됩니다.
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7

사용자 삽입 이미지

# Expression Blend 3 + Sketchflow 설치 하기

Expression Blend3 의 다운로드는 아래와 같습니다.
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=e82db5e2-7106-419e-80b0-65cce89f06bb


사용자 삽입 이미지

사용자 삽입 이미지

2009/12/16 15:24 2009/12/16 15:24
inde 이 작성.

시작하세요.  Silverlight

#1 개발 환경 구성하기.

실버라이트는  .Net의 무수한 라이브러리를  Light 하게 옮겨 놓은 것을 말합니다. 이로서 우리는 무거운 .Netframework를 설치할 필요 없이 간단하게 Silverlight Application 를 이용할수 있는 것이지요.

하지만 Silverlight 의 개발 환경은 다릅니다. 기본적으로 .Netframework 3.5 를 기반으로 개발 API 구성되어 있어 .Netframework 3.5 sp1 이상의 환경에서 개발이  가능합니다.

Silverlight를 개발하기 위해서는 여러가지 방법이 있습니다. 우선 우리가 Windows 개발쪽으로 많이 썼었던 Visualstudio 2008 과, Visual Express 2008 에서 개발이 가능합니다. 그외에 비 윈도우 에서는 Mono Project 를 이용한 이클립스 플러그인이 있습니다.

이클립스 설치 방법은 http://cafe.naver.com/mssilverlight/3220 를 참고하세요.


# Visual Studio 2008 개발환경

Visual Stidio 2008 에서 Silverlight 를 개발 하기 위해선 VS2008 SP1 와 Silverlight tools 가 필요 합니다.

다운로드
VS 2008 SP1 http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e

Silverlight 3 Tools http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=e82db5e2-7106-419e-80b0-65cce89f06bb

여기서 주의해야 할점은 VS 2008 과 Silverlight Tool 은 언어 선택이 동일 하여아 합니다. 이문제도 많이들 고생하시는걸 보았습니다  또한 설치시에는 웹브라우져를 반드시 종료한 다음 설치해 주시기 바랍니다.
설치가 완료 되면 VS2008 에 Silverlight 프로젝트 템플릿이 추가 된것을 보실수 있습니다.

사용자 삽입 이미지

#VisualStudio 2008 Express
MS 에서는 값비싼 VS2008 을 구매할 필요 없이 무료로  VisualStudio 2008 Express 를 제공합니다.역시  VisualStudio 2008 Express 에서도 Silverlight Tools을 제공 하고 있습니다. VisualStudio 2008 Express 의 경우 Web Developer 버젼을 설치하시고  위에서 다운로드 받았던 Silverlight Tools 만 설치 하시면 됩니다.

다운로드
VisualStudio 2008 Express http://www.microsoft.com/express/download
Silverlight 3 Tools http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=e82db5e2-7106-419e-80b0-65cce89f06bb

사용자 삽입 이미지

2009/12/16 15:00 2009/12/16 15:00
inde 이 작성.