2012-04-11 6 views
0

私はthis tutorialで教えられた概念を使用して、Silverlightアプリケーションとの間でJavascriptと通信します。 JavaScriptコードでHTML側のすべてのフォームフィールドに値が入力されているかどうかを確認し、そうであればMainPageでメソッドを実行します。ScriptableMemberをメインページの検証に使用

このテクニックは、MainPageではなくScriptableClassオブジェクトへの応答を返すという問題があります。 ScriptableObjectがMainClass内のメソッドをどのように呼び出すことができるかは誰にも分かります。おそらく、ScriptableClassオブジェクトでトリガされたMainClassのイベントを使用していますか?

public class ScriptableClass 
{ 
    [ScriptableMember] 
    public void gotdetails(string message) 
    { 
     if (message == "1") 
     { 
      // call next method in MainPage 
     } 
     if (message == "0") 
     { 
      // tell user to complete fields 
     } 
    } 
} 
+0

他のクラスからこのメソッドを呼び出すことはできますか? – GANI

+0

おそらく、以下で述べるように、親を参照するためにRootVisualを使用することにしました。ありがとう。 – Dave

答えて

1

一つの解決策は、私はあなたがすべてでScriptableClassを必要としない意味、MainClassに「gotdetails」方法あなたを動かすとはScriptableObjectとしてこのMainClassを登録しています。

2番目のオプションでは、ScriptableClassを保持したい場合は、ScriptableClassで静的イベントを作成し、MainClassでこのイベントにサブスクライブします。静的イベントでは、MainClassインスタンスからScriptableCalsインスタンスにアクセスする必要はありません。

MSDNにもjavacriptとSilverlightの通信についてのwalthroughがあります。

+1

ありがとうございます。特定のケースで必要な場合があります。 ScriptableクラスでRootVisualを使用することで、非常に簡単に作業できます。 if(message == "1") { MainPage mp = App.Current.RootVisual as MainPage; mp.mymethod();} – Dave

関連する問題