locked
初期画面表示直前に処理を実装したい RRS feed

  • 質問

  • 損と申します。
    VS2010+Blend4+Silverlight4で開発しております。

    初期画面表示直前に、表示するコントロールにBindされたプロパティを全て更新する処理を実装しようとしております。
    イメージとしては、全ての貼り付けられたコントロールのApplyTemplateが完了してから、画面に実際に表示されるまでの間に処理を実装したいのですが、どのようにすれば良いか分かりません。

    コントロールを包括するUserControlのOnApplyTemplateをoverrideしてみましたが、そのメソッドは実行されませんでした。

    私の理解度では、全てのコントロールのOnApplyTemplateで、「自分は画面上で最後に呼ばれたOnApplyTemplateか」を判定し、最後のコントロールだったら処理を実行する、という実装しか思いつきません。

    どなたか良い実装方法をご教示頂けないでしょうか。

     

    2011年3月21日 6:31

回答

  • 今まで3つ程質問されていますが、以下のようなことをやりたいのかなと思ってBlogに書いてみたのですがどうでしょうか?
    LoadedイベントやOnApplyTemplateでは私も試してみたけどダメだったので、SizeChangedイベントで代用してます。もしかしたら、画面のサイズ変更がもたつくかもしれません・・・

    http://d.hatena.ne.jp/okazuki/20110321/1300715482


    かずき Blog:http://d.hatena.ne.jp/okazuki/ VS 2010のデザイナでBlendのBehaviorをサポートするツール公開してます。 http://vsbehaviorsupport.codeplex.com/
    • 回答としてマーク 2011年3月22日 0:50
    2011年3月21日 13:52

すべての返信

  • 今まで3つ程質問されていますが、以下のようなことをやりたいのかなと思ってBlogに書いてみたのですがどうでしょうか?
    LoadedイベントやOnApplyTemplateでは私も試してみたけどダメだったので、SizeChangedイベントで代用してます。もしかしたら、画面のサイズ変更がもたつくかもしれません・・・

    http://d.hatena.ne.jp/okazuki/20110321/1300715482


    かずき Blog:http://d.hatena.ne.jp/okazuki/ VS 2010のデザイナでBlendのBehaviorをサポートするツール公開してます。 http://vsbehaviorsupport.codeplex.com/
    • 回答としてマーク 2011年3月22日 0:50
    2011年3月21日 13:52
  • 分かりにくい質問を丁寧に解説して頂き、誠に有難うございます。
    Blogの内容は、まさにやりたい内容で、非常に参考になりました。

    INotifyDataErrorInfoで妥当性検証をする場合、LoadedのEventTriggerの中ではGetErrorsが思うように処理されないため、その回避策としてOnApplyTemplateを使用できないかと模索しておりました。
    代わりにLayoutUpdatedでエラー検証を行う実装も試しましたが、処理が重くなり断念しました。
    SizeChangedであれば、それよりは軽くなる可能性があるため、試してみたいと思います。

    2011年3月22日 0:50