본문 바로가기

Silverlight

[Sample] 실버라이트 객체의 동적 로딩

이번 글 역시 실버라이트 네이버 카페의 쇼티님께서 번역해 주신 자료입니다.

================================================================================================================= 

이번 Tip of The Day의 주제는 'How To Dynamically Load and Display SilverLight Applications'라는 주제입니다.

 (http://silverlight.net/blogs/msnow/archive/2008/09/09/silverlight-tip-of-the-day-37-how-to-dynamically-load-and-display-silverlight-applications.aspx)

  어디까지나. '입문'을 위한 팁입니다. 많이 아시는 내용일 수도 있겠는데. 정리차원에서. 시작합니다.. ^^

   지금까지 우리는 정적(Static)의 실버라이트 기본 템플릿을 이용했지요.

  <body style="height:100%;margin:0;">
    <form id="form1" runat="server" style="height:100%;">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <div  style="height:100%;">
            <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication29.xap" MinimumVersion="2.0.30523" Width="100%" Height="100%" />
        </div>
    </form>
 </body>

   이제 실버라이트 xap파일을 두어개 정도 준비해두고 상황에 맞게 띄우는 동작을 볼 예정입니다. 이 동작을 보기 위해

  일반 asp 버튼 2개와, 한개의 Panel을 만들어줍니다. 만약 첫번째 버튼이 눌리면 첫번째 xap이, 두번째 버튼이 눌리면

  두번째 xap이 나오겠지요.

  

 



 

  그럼 구현방법을 보도록 하겠습니다.

 

  1. 일단 새 Silverlight Application을 생성합니다.

  2. 솔루션 익스플로러에서 Add->New Project->Silverlight Application으로 새 어플리케이션을 지정해준 후에, 미리 만들

      어둔 웹사이트에 링크시킵니다.

      (주:이 방법이 아니더라도, xap파일만 있으면 되는것이니까.. 따로 열어서 두개의 xap파일을 생성하고, ClientBin에 넣어

           두는 방식으로 하셔도 무방합니다. ^^)

  3. default.aspx를 연 다음에 (아무것도 코딩이 안되어있죠), ScriptManager를 넣고, Panel 컨트롤, 버튼컨트롤 2개를

      넣습니다.  

  4. 그리고 이 default.aspx를 Set as Start Page로, 시작페이지로 설정해둡니다. 그럼 아마 이와 비슷할꺼예요. 

<body style="height: 100%; margin: 0;">   
  <form id="form1" runat="server" style="height: 100%;">   
    <asp:ScriptManager ID="ScriptManager1" runat="server" />   
    <asp:Panel ID="SilverlightApp" runat="server" />   
    <asp:Button ID="Button1" runat="server" Text="Show First App" OnClick="OnShowFirstApp"        

                OnCommand="Button1_Command" />
    <asp:Button ID="Button2" runat="server" Text="Show Second App" OnClick="OnShowSecondApp"       

                OnCommand="Button1_Command" />   
  </form>
</body>

  5. 보시면 버튼에 각각 이벤트 함수를 설정해두었죠. 이제 비하인드 코드(aspx.cs)에서 다음을 작성합니다.

protected void OnShowFirstApp(object sender, EventArgs e)

{

    System.Web.UI.SilverlightControls.Silverlight sl =

              new System.Web.UI.SilverlightControls.Silverlight();

 <?xml:namespace prefix = o />

    sl.Source = "ClientBin/SilverlightApplication1.xap";

    sl.ID = "SilverlightApp1";

    sl.Width = new Unit(800);

    sl.Height = new Unit(600);

    sl.Windowless = true;

 

    SilverlightApp.Controls.Add(sl);

}

 

protected void OnShowSecondApp(object sender, EventArgs e)

{

    System.Web.UI.SilverlightControls.Silverlight sl = new System.Web.UI.SilverlightControls.Silverlight();

 

    sl.Source = "ClientBin/SilverlightApplication2.xap";

    sl.ID = "SilverlightApp2";

    sl.Width = new Unit(800);

    sl.Height = new Unit(600);

    sl.Windowless = true;

 

    SilverlightApp.Controls.Add(sl);

}

   저 System.Web.Ui.SilverlightControls.Silverlight sl = ..... 이 부분은 전역으로 선언하는 방법도 괜찮을 것 같군요.

  보시면, Source 해서 xap파일을 지정하고, ID 주고, 각종 속성을 설정한 것을 볼 수 있습니다 (Width, Height, Windowless 등)