2011-02-17 2 views
2

내 기술 담당자가 Javascript 만 사용하여 Silverlight 응용 프로그램을 개발할 수 있다고 말했습니다. 나는 약간의 인터넷 검색 및 binging을했다. Silverlight 2.0을 개발하기위한 기본 개발 방법이었습니다. 또한 SL 2.0에서 C#에 대한 선호도를 잃어 버린 것 같습니다.Javascript를 사용하여 Silverlight 용으로 개발할 수 있습니까?

Javascript 만 사용하여 Silverlight 응용 프로그램을 개발할 수 있습니까? 저는 Silverlight와 브라우저가 광범위한 스크립팅 기능을 갖추고 있으며 JS를 통해 스크립팅 될 수 있음을 알고 있습니다. 하지만 그것으로 SL 응용 프로그램을 만들 수 있습니까?

답변

5

경험은 매우 다르지만 여전히 가능합니다. 서버의 XAML 파일을 참조하는 Silverlight 객체의 source 속성을 통해 초기 루트 시각적 요소를로드해야하지만 그 후에는 javascript를 통해 시각적 트리에 대한 모든 액세스 권한을 가져야합니다.

아래의 Test.html 파일과 Root.xaml 파일은 같은 폴더에 있으면 테스트 가능한 페이지를 만듭니다.

"표준"(즉 * .xap 소스) 시나리오와 다른 점은 SL 객체 태그의 'source'매개 변수가 .XAP 파일 대신 .XAML 파일로 설정되어 있다는 것입니다. .XAML 파일은 VS의 기본 SL 응용 프로그램에서 가져온 것과 다릅니다. x : Class = "MyApp.MainPage"는 루트 요소에없고 루트 요소는 Grid (또는 모든 Visual 요소)입니다. UserControl 요소 대신. 이것은 응용 프로그램이 없기 때문입니다. (적어도 .XAP에서로드되지 않았습니다. SL 제어가 Root.XAML 파일을로드하는 과정에서 실제로 기본 응용 프로그램 인스턴스를 생성한다고 가정합니다.) 코드 비하인드가 없으므로 UserControl이 없습니다. . 이는 UserControls이없는 Pre-SL1.1/2.0 환경과 일치합니다.

또한 자바 스크립트 코딩에서 Javascript API for Silverlight Reference을 참조해야합니다. FindName 메서드로 재미있게 지내거나 Visual Tree를 따라 가십시오! 이것들은 시각적 객체에 대한 참조를 코드에서 조작하는 유일한 방법입니다!

test.html를

<html> 
    <body> 
     <object id="slObject" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400" height="300"> 
       <param name="source" value="Root.xaml"/> 
       <param name="onError" value="onSilverlightError" /> 
       <param name="background" value="white" /> 
       <param name="minRuntimeVersion" value="4.0.50826.0" /> 
       <param name="autoUpgrade" value="true" /> 
       <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none"> 
        <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/> 
       </a> 
     </object> 
     <input type="button" onclick="sayGoodBye();" value="Say Goodbye, Silverlight!" /> 
     <script> 
      function sayGoodBye() { 
       var slObject = document.getElementById('slObject'); 
       var slContent = slObject.Content; 
       var layoutRoot = slContent.FindName('LayoutRoot'); 
       var message = layoutRoot.FindName('Message'); 
       message.Text = 'Goodbye'; 
      } 
     </script> 
    </body> 
</html> 

Root.xaml

<Grid x:Name="LayoutRoot" Background="White" 
    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"> 
    <TextBlock x:Name="Message" Text="Hello, Silverlight!" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
</Grid> 
+0

+1. 좋은 대답. –

관련 문제