티스토리 뷰

반응형

Silverlight가 시작할 때 Parameter를 사용하는 방법에 대해 살펴보자.

 

1. Parameter

실버라이트를 호출하는 페이지에 Get이나 Post를 이용해서 Parameter를 전송하면, 그 것에 따라서 다른 처리를 할 수 있게 되는데,

 

일단 기본 호출 방법은 아래와 같다.

 

http://localhost:57178/Default.aspx

 

여기에 Parameter를 이용해서 호출해 보면 아래와 같다.

 

http://localhost:57178/Default.aspx?para1=123&para2=456

 

 

2. Parameter를 Web page의 CodeBehind에서 처리하고 initParams로 넘겨서 사용하기

이렇게 사용하는 경우 Parameter를 웹단에서 가공해서 다른 데이터로 변경해서, Silverlight로 넘겨줘야 하는 경우 유용하다. 예를 들어 암호화가된 문자열을 받아서 해독후에 넘겨주는 경우가 있다면, 사용할 수 있겠다.

위에 1.App.xaml.cs load의 경우 파라메터를 App.xaml.cs에서 읽어서 Resource에 추가를 해주도록해서 모든 화면에서 사용이 가능하도록 만들은 것이고, 2.MainPage.xaml.cs direct load의 경우에는 사용하는 화면에서  Parameter를 사용하는 방법이다.

 

Default.aspx.cs -> CodeBehind페이지를 추가

 

namespace SilverlightApplication1.Web
{
    public partial class _Default : System.Web.UI.Page
    {
        public string para1 = string.Empty;
        public string para2 = string.Empty;

 

        protected void Page_Load(object sender, EventArgs e)
        {
            para1 = Request["para1"];
            para2 = Request["para2"];
        }
    }
}

 

Default.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SilverlightApplication1.Web._Default" %>

...

 

<body>
    <form id="form1" runat="server" style="height:100%">
        <div id="silverlightControlHost">
            <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
        <param name="source" value="ClientBin/SilverlightApplication1.xap"/>
        <param name="onError" value="onSilverlightError" />
        <param name="background" value="white" />
        <param name="minRuntimeVersion" value="4.0.60310.0" />
        <param name="initParams" value="para1=<%=para1 %>,para2=<%=para2 %>" />
        <param name="autoUpgrade" value="true" />
        <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.60310.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
        </a>
         </object>
            <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
        </div>
    </form>
</body>

 

[1.App.xaml.cs load]

 

App.xaml.cs

 

private void Application_Startup(object sender, StartupEventArgs e)
{
    //App.xaml에서 읽어서 리소스로 만들어서 사용하기
    if (e.InitParams.ContainsKey("para1"))
    {
        App.Current.Resources.Add("para1", e.InitParams["para1"] as string);
    }
    if (e.InitParams.ContainsKey("para2"))
    {
        App.Current.Resources.Add("para2", e.InitParams["para2"] as string);
    }

    this.RootVisual = new MainPage();
}

 

MainPage.xaml.cs

 

tbPara1.Text = App.Current.Resources["para1"] as string;
tbPara2.Text = App.Current.Resources["para2"] as string;

 

[2.MainPage.xaml.cs direct load]

 

tbDirPara1.Text = App.Current.Host.InitParams["para1"];
tbDirPara2.Text = App.Current.Host.InitParams["para2"];

 

3. Silverlight에서 HtmlPage에 직접 접근해서 Parameter가져오기

 

제일 간단한 방법으로, 여러개의 parameter를 처리하는 경우에는 foreach를 이용할 수도 있다.


tbHtmlPara1.Text = HtmlPage.Document.QueryString.FirstOrDefault(p => p.Key == "para1").Value;
tbHtmlPara2.Text = HtmlPage.Document.QueryString.FirstOrDefault(p => p.Key == "para2").Value;

 

<param name="enableGpuAcceleration" value="true" />
<param name="enableCacheVisualization" value="false" />
<param name="enableFrameRateCounter" value="true" />

4. 소스

 

SilverlightApplication1.zip
다운로드

 

반응형
댓글