블로그 이미지
프로그램을 가장 훌륭하게 작성하는 방법은 상태가 변경되는 오브젝트들과 수학적인 값을 나타내는 오브젝트들의 조합으로 표현하는 것이다. -Kent Beck 초초초보

카테고리

Programming (184)
ASP.NET (9)
Silverlight (2)
Javascript (20)
C# (8)
java (25)
SQL (14)
Oracle (3)
MyBatis (3)
기타 (52)
개발방법론 (1)
trouble shooting (2)
Linux (5)
스칼라 (5)
html (2)
grails & gradle (3)
Spring (2)
rabbitmq (1)
(3)
spark (0)
docker (3)
Total
Today
Yesterday

달력

« » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글


이 글은 두 가지의 주제로 이루어져 있다.
첫 번째는 Javscript -> Silverlight 이고
두 번째는 Silverlight -> Javascript 이다

 첫 번째 Javascript 에서 Silverlight 로의 통신은 페이지를 만들 때 Full Silverlight 는 거의 없다.
html 페이지에서 일부분을 Silverlight 로 꾸미게 된다.
그럴 때 html 페이지에서 실버라이트의 상태를 바꾸고자 할 때 이용된다.

총 4단계를 거쳐서 Javascript 에서 Silverlight 로의 통신이 이루어져 진다.

1단계 : script 를 사용할 클래스에 System.Windows.Browser namespace 의 [ScriptableType] Attributte 를 설정해준다.
          그리고 script 를 사용할 멤버 메소드에 [ScriptableMember] Attributte를 설정해 준다.
2단계 : 해당 클래스 생성자에 HtmlPage.RegisterScriptableObject("scriptKey", this);코드를 넣어준다.
           --> 첫 번째 매개변수는 스크립트를 등록을 하게 되는 키를 나타내고 두 번째 매개변수는 스크립트를 적용할 개체(Object)이다.

1단계와 2단계 예제 소스

  [ScriptableType] //스크립트 사용할 클레스에 선언
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            HtmlPage.RegisterScriptableObject("scriptKey", this); //스크립트 키 등록
         }

        [ScriptableMember] // 스크립트 사용할 메소드
        public void alert(string message)
        {
            HtmlPage.Window.Alert(message);
        }
    }





3단계 : 이제 Silverlight 에서 준비할 내용은 모두 끝났다. Javascript에서 Silverlight 메소드를 호출할 코드를 작성하면 된다.
          간단한 Javascript 함수를 만들면 
       function gogo() {
        //Object 태그의 ID
            var object = document.getElementById("silver");
            if (object) {
          //실버라이트 메소드 호출
                object.content.scriptKey.alert("hihi");
            }
        }
실버라이트 메소드 호출 부분을 보면 실버라이트 배포할 때 쓰인 태그인 object 의 ID 객체를 가져와서
객체.content.scriptKey.alert("hihi");
scriptKey 는 2단계에서 말한 scriptKey의 Key에 해당하며
alert("hihi") 는 Silverlight에서 호출될 메서드 명이다.

4단계 : 3단계에서 작성한 gogo() 함수를 호출하면 Silverlight의 alert() 메소드가 호출된다.

ps. Silverlight 에서 메소드를 호출 하고 작업을 실행 후 문자열, 숫자 등을 return 받는 것도 가능 하다.

 두 번째 Silverligt 에서 Javascript의 호출은 2단계를 거쳐서 구현 할 수 있다.
1단계 : Javascript에서 실행 할 함수를 하나 만든다
예제 소스 : 매개 변수 받아서 경고창 띄워준다.
         function gogogo1(val) {
            alert(val);
        }


 2단계 : System.Windows.Browser namespace의
ScriptObject Class 를 이용하여 가능할 수 있다.
ScriptObject  Class 를 생성을 하는데 생성 하는 방법은

ScriptObject script =  HtmlPage.Window.GetProperty("gogogo") as ScriptObject;
script.InvokeSelf("hihi");

System.Windows.Browser namespace의 HtmlPage.Window.GetProperty메소드를 사용 한다.
매개변수로 들어 가는 건 Javascript에서 정의한 함수명 이다.
GetProperty는 Object 를 반환 해주기 때문에 캐스팅을 해주어야 한다.

InvokeSelf 매소드는 실제로 함수 호출 부분이다.
매개변수는 params Object[] 이기 때문에 Javascript 에서 정의한 함수대로 매개변수를 넣어주면 된다.
그러면 Javscript 함수가 호출되는 것이다.

ps. 마찬가지로 기본형식은 return 받을 수 있다.
아래는 예제 소스이다.
버튼을 클릭 했을 경우 Javascript 함수를 호출하는 간단 소스
예제소스
         void button1_Click(object sender, RoutedEventArgs e)
        {
            //ScriptObject 객체에 gogogo 함수 등록
            ScriptObject script =  HtmlPage.Window.GetProperty("gogogo") as ScriptObject;
            //실제 함수 호출
            script.InvokeSelf("hihi");
        }
















Posted by 초초초보
, |