私はInitParamsを受け取り、そのInitParamsを使ってページのMediaElement
のSource
を変更する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で私MediaElement
にSource
を変更するには、私のコードを挿入するのに最適な場所がどこにあるかを把握する必要があります。私はそれをMainPage
に入れますか? Loaded
イベントハンドラを追加してUserControl_Loaded
に入れる必要がありますか? Page_Loaded
とすれば、Silverlight 3ではどこでそれを見つけることができますか?
ご協力いただければ幸いです。
わかりました。それでも、MainPage()ではなくUserControl_Loadedに配置する方が有利でしょうか? –
コンストラクタとLoadedイベントハンドラのコードの配置の違いは、これらのメソッドが呼び出されるときです。コンストラクタは、コントロールのインスタンスがインスタンス化されるとすぐに最初に呼び出されます。その後Loadedイベントが発生します。 Loadedが持つ利点の1つは、Xamlのオブジェクトに設定されているプロパティは、Loadedが起動されるまでに値が初期化され、コンストラクタでは初期化されないことです。しかし、あなたのコンストラクタでInitializeComponent()を呼び出すので、あなたのコードがその呼び出しの後に来る限り、これは重要ではありません。 – KeithMahoney
情報ありがとう! –