2012-05-10 7 views
1

これをどうやって始めたらよいか分かりません。可能なイベントを聞くために反射する - silverlight/wp7

ページに3つのコントロールがホストされています。それらのうちの2つには、コントロールがロードされたときに実行するStoryboardがあります。そのうちの1つはそうではありません。しかし、後で追加されるコントロールが増えているので、そのうちのいくつかはStoryboardとなります(動的であるため、事前に知る方法はありません)。長い話)。

私がしたいことはホストページからのもので、コントロールに「Storyboard sb」のフィールドがあるかどうかを確認し、そうであれば、それをフックして、コントロールが終了したらホストページが何か。

私はSystem.Reflectionの周りをかなり見てきました。私はヘルプファイルの正しい場所にいると思いますが、どのように見なければならないのか分かりません。a)コントロールb) "Completed"イベントがあればフックし、c)ハンドラを削除します。

アドバイス/指示がありますか?

+0

使用依存関係プロパティを(生成されたコードではマイナーなタイプミスは、間違っている場合は、あなたがスニペットを修正する必要がありますしています)ストーリーボード)。 DPでは、値について何も知らないオブジェクトに任意の値を割り当てることができます。また、Xamlで割り当てることも、コードから動的に追加することもできます。 *リフレクションよりも高速です。* –

+0

@HiTech Magic、もっと詳しく知るには、サンプルや記事がありますか? – Stan

+0

Handy Snippetを使用してDPを生成する:http://wildermuth.com/2009/03/09/Silverlight_Dependency_Property_Snippet(コードにマイナーなタイプミスがあります。間違った場合は、修正する必要があります)。 –

答えて

1

代わりに依存関係プロパティを使用します(この場合は、ストーリーボードタイプの依存関係プロパティ)。

DPでは、値について何も知らないオブジェクトに任意の値を割り当てることができます。また、Xamlで割り当てることも、コードから動的に追加することもできます。反射よりも速いです。

ハンディスニペットは、ここでのDPを生成する:Silverlight Dependency Property Snippetが、この場合、(代わりに `タイプの依存関係プロパティを

0

ストレートボードを使用する必要があるかどうかを示すために、コントロールの属性を「悪用する」方法が比較的簡単であるかもしれません。私はこの種のシナリオのファンではありませんが、シンプルで素早く(そして汚れています)、リフレクションから離れていくことができます。

+0

ええ、私はすでにいくつかの他のもののために.Tagフィールドを使用しています。この場合、ストーリーボードを持っているかどうかは、すべてのコントロールで同じです。 – Stan

+0

この「ストーリーボード」フィールドはどのようなフィールドですか?あなた自身のコントロール、またはすぐに使用できるコントロールを使用していますか? –

+0

これは、ユーザーコントロールのロードイベントでアニメーションを実行するための通常のストーリーボードです。 'Storyboard sb'フィールドはクラスレベルにあります。 – Stan

関連する問題