본문 바로가기

Silverlight

[Sample] Silverlight에서 파라미터를 받아 초기화를 하자


이번 강좌는 객체에서 파라미터를 받아서 초기화를 하는 방법에 대해서 알아 보도록 하겠습니다.

모두들 플래시를 많이 사용해 보셨을 것입니다. object 태그의 param 속성에 FlashVars를 이용하여 파라미터를 넘겨서 플래시 내부에서 넘어온 데이터를 사용합니다.

기존 1.0이나 1.1에서 사용이 가능한지는 모르겠지만 (전에 찾아보다 실패했음) 2 Beta1에서는 당당히 지원을 하고 있습니다.

그럼 이제부터 사용방법과 예제를 통하여 배우도록 하겠습니다.

1. 실버라이트를 부르는 페이지에서 파라미터 설정

우리가 실버라이트를 부를때 사용할 수 있는 방법은 2가지가 있습니다(Silverlilght 2 기준). ASP.NET의 Silverlight 컨트롤과 Html의 object 태그입니다.

ASP.NET의 Silverlight 컨트롤


<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/Shblitz.DeepZoom.xap" Version="2.0" Width="100%" Height="100%" InitParameters="Page=cat,Seq=1" />

Html의 object 태그

<div id="silverlightControlHost">
 <object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="100%" height="100%">
  <param name="source" value="ClientBin/Shblitz.DeepZoom.xap"/>
  <param name="onerror" value="onSilverlightError" />
  <param name="background" value="white" />
  <param name="initParams" value="Page=cat,Seq=1" />
 
  <a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;">
    <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
  </a>
 </object>
 <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
</div>

2. 실버라이트 App.xaml 에서의 처리

App.xaml 파일에서 처리하는 설명은 2가지 예제를 들어서 설명을 하도록 하겠습니다.

예제1) Page 파라미터의 값에 따라 UserControl 생성

private void Application_Startup(object sender, StartupEventArgs e)
{
    // Page 파라미터 값에 따라 원하는 UserControl을 생성한다.
    switch(e.InitParams["Page"])
    {
        case "cat":
            this.RootVisual = new Cat();
            break;
        case "dog":
            this.RootVisual = new Dog();
            break;
        default :
            this.RootVisual = new Page();
            break;
    }

    // 나머지 파라미터들은 각자 알아서 사용해보시면 됩니다.
}

예제2) 파라미터 값을 UserControl로 보내기

UserControl의 Page.xaml 파일에서 생성자 변경

public Page(IDictionary<string, string> InitParams)
{
    // 전역으로 저장하여 필요할 때 사용하시거나 초기화만 시키면 됩니다.
    _initArguments = InitParams;
    InitializeComponent();
}

App.xaml 파일 처리

private void Application_Startup(object sender, StartupEventArgs e)
{
    // 넘어온 파라미터를 UserControl로 넘기기만 하면 됩니다.
    this.RootVisual = new Page(e.InitParams);
}

위 예제 2개를 혼용하여 사용하면 편리하게 사용이 가능할것입니다.

3. 실버라이트를 부르는 페이지의 QueryString 사용

QueryString을 사용하는 방법은 1.1에서와 2에서 사용방법이 변경이 되었습니다.

접속 주소가 아래와 같을 경우

http://shblitz.net/silverlight.aspx?Seq=1

Silverlight 1.1의 경우

string seq = System.Windows.Browser.HtmlPage.QueryString["Seq"];

Silverlight 2의 경우

System.Windows.Browser.HtmlDocument doc = new System.Windows.Browser.HtmlDocument();
string seq = doc.QueryString["Seq"];

이것으로 마치도록 하겠습니다. 이 글을 읽은 분들께 많은 도움이 되었으면 합니다!!

[출처] 상현넘님 블로그