2. Silverlight에서 Javascript에서 정의된 메소드 호출하기.
3. Silverlight Event 연동.
1. Javascript에서 Silverlight 모듈내에 정의된 메소드 사용하기.
Silverlight에서 작성된 메소드를 JavaScript에서 액서스 가능하도록 설정.
HtmlPage.RegisterScriptableObject("slInternal", this);
[ScriptableMember]
public string SayHelloToMe(string firstName)
{
Block1.Text = firstName;
return "성공";
}
JavaScript에서 Silverlight 메소드 호출.
var ret = slObj.content.slInternal.SayHelloToMe("자이닉스");
2. Silverlight에서 Javascript에 정의된 메소드 호출하기
Javascirpt 함수 작성.
<script type="text/javascript">
function sayGoodbye(name)
{
alert( "name : " + name);
return "성공";
}
</script>
Silverlight에서 Javascript에 존재하는 함수 호출
또는
string ret = (string)jsObj.InvokeSelf(TextBox1.Text, 1000);
3. Silverlight Event 연동.
이벤트 정의
public class CompletedEventArgs : EventArgs
{
public CompletedEventArgs(string status, string result)
{
Status = status;
Result = result;
}
[ScriptableMember]
public string Status { get; set; }
public string Result { get; set; }
}
델리게이트를 ScriptableMember로 선언.
[ScriptableMember]
public event EventHandler<CompletedEventArgs> Completed;
private void OnCompleted(string status, string result)
{
if (Completed != null)
{
CompletedEventArgs args = new CompletedEventArgs ( status, result );
Completed(this, args);
}
}
버튼을 클릭했을 때, 이벤트 발생.
{
OnCompleted("OK", "자이닉스");
}
Javascript에서 Silverlight에서 발생되는 이벤트 연결.
{
var slObj = document.getElementById("Xaml1");
alert(slObj.content.slInternal);
slObj.content.slInternal.Completed = function(sender, a)
{
// sender는 Silverlight 객체이다. (slObj.content.slInternal)
alert(a.Result);
}
}
HTML 페이지에서 Silverlight에 있는 이벤트를 연결할 때, HTML 페이지의 OnLoad 이벤트에서 처리하게 되면 Silverlight 어플리케이션이 생성되어 있지 않을 수도 있기 때문에 스크립트 오류를 발생시킬 수 있다. 이것을 정상적으로 처리하기 위해서는 Silverlight 어플리케이션의 로드가 끝난 시점에 HTML 페이지에 Silverlight 어플리케이션이 로드 되었다는 것을 알려주고, 그 때 HTML 페이지에서 Silverlight의 이벤트 연결 작업을 하면 된다.
'Tech > Silverlight' 카테고리의 다른 글
Silverlight with WEB (0) | 2009.03.30 |
---|---|
Loading Dynamic XAPs and Assemblies (0) | 2009.03.19 |
USING STARTUP PARAMETERS WITH SILVERLIGHT (0) | 2009.03.18 |
Isolated Storage in Silverlight 2 (0) | 2009.03.16 |