<ScriptableMember()>
属性で装飾されたDoSomething()
という名前のメソッドを持つSilverlightコントロールがあります。私はこのメソッドをと呼びます。をJavaScriptから呼び出すと、SL側から「メソッド呼び出されました!」というメッセージボックスが表示されます。JavaScriptからSilverlightコントロールのScriptableMemberメソッドを呼び出すと、コントロールの新しいインスタンスが作成されますか?
ポイントはすべて動作します。私が抱えている問題は、の前にというメソッドを呼び出すことです.1.n FileInfo
オブジェクトを含むSilverlightコントロールにObservableCollectionを構築します。これはうまく動作し、ファイルを追加すると構築されます。ファイルを追加するたびに、メッセージボックスにSilverlightからのカウントが表示されます(つまり、「Count = 2」)。
問題:JSからメソッドDoSomething()
を呼び出し、そのObservableCollectionにアクセスすると、count = 0!何が起こっているのか見るために、SilverlightコントロールのコンストラクタにJSから呼び出されたときに入力されたかどうかを確認するメッセージを入れました。実際にはにはがあり、コントロールを再作成しているようです。
この場合、私のObservableCollectionは、FileInfoコレクションを構築したのと同じコントロールインスタンスではないので、count = 0を持つことは意味があります。
私はコレクションを保存していますが、SilverlightからJSにメソッドを呼び出すだけで、コントロールを再作成して、その状態にアクセスすることを許可しないのはなぜですか?私は新しいコントロールを望んでいない、私はそのままそれを操作する必要があります。または、私はベースから外して、このbeahviorを引き起こすために間違った何かをしていますか?
思考?ありがとう!
あなたはベースオフ間違いなくある私は、コード例では、このトピックと、このような状況の下の記事拡大についてブログ。あなたは明らかに何か悪いことをしていますが、コードの完全な欠如では、それが何であるかを言うことは不可能です。すべての関連するC#とjsコードを含めてください(それを短くしてください)。 – AnthonyWJones