2009-09-01 10 views
2

私はInitParamsを受け取り、そのInitParamsを使ってページのMediaElementSourceを変更するSilverlightアプリケーションを作成しようとしています。私は自分のコードを置くための適切な場所を見つけようとしています。Silverlightでは、UserControl_LoadedとPage_Loadedの違いは何ですか?

私はティム・ホイヤーのexcellent video InitParamsのを見ますが、(Silverlight 2のためだった)ビデオで、それはPage.xaml.csに次のことを示しています

void Page_Loaded(object sender, RoutedEventArgs e) 
    { 

    } 

私はときPAGE_LOADEDが表示されません私はMainPage.xaml.csを開き、それがSilverlight 2 SDKで自動的に作成され、Silverlight 3 SDKから除外されているのだろうかと思います。あるいは、ティム氏は自分のビデオでそれを手動で追加しました。私はMainPage.xamlをの開口部のUserControlタグに移動して、MainPage.xaml.csに次のように作成するLoaded="<New_Event_Handler>"を追加することができますを見つける

private void UserControl_Loaded(object sender, RoutedEventArgs e) 
    { 

    } 

デフォルトでは、次はメインページでもあります。 App.xaml.csでApplication_Startupイベント中に実行されxaml.cs、:

public MainPage() 
    {    
     InitializeComponent(); 
    } 

は、私は私のXAMLで私MediaElementSourceを変更するには、私のコードを挿入するのに最適な場所がどこにあるかを把握する必要があります。私はそれをMainPageに入れますか? Loadedイベントハンドラを追加してUserControl_Loadedに入れる必要がありますか? Page_Loadedとすれば、Silverlight 3ではどこでそれを見つけることができますか?

ご協力いただければ幸いです。

答えて

2

"UserControl_Loaded"と "Page_Loaded"は単なるメソッド名であり、名前は関係ありません(必要に応じてメソッド名を "Foo"と指定できます)。これらのメソッドを何にするかは、UserControlのLoadedイベント(MainPage.xamlファイルを編集したときに行ったもの)に関連付けられているという事実です。

+0

わかりました。それでも、MainPage()ではなくUserControl_Loadedに配置する方が有利でしょうか? –

+1

コンストラクタとLoadedイベントハンドラのコードの配置の違いは、これらのメソッドが呼び出されるときです。コンストラクタは、コントロールのインスタンスがインスタンス化されるとすぐに最初に呼び出されます。その後Loadedイベントが発生します。 Loadedが持つ利点の1つは、Xamlのオブジェクトに設定されているプロパティは、Loadedが起動されるまでに値が初期化され、コンストラクタでは初期化されないことです。しかし、あなたのコンストラクタでInitializeComponent()を呼び出すので、あなたのコードがその呼び出しの後に来る限り、これは重要ではありません。 – KeithMahoney

+0

情報ありがとう! –

関連する問題