2009-04-18 4 views
2

私はキャンバスから継承するsliverlightでユーザーコントロールを設計しています。新しいUIElementがMyBaseのChildrenプロパティに追加されたときを知る必要がありますが、 "ItemAdded"のようなイベントはありません。キャンバスの子供たちをアニメーション化したいので、LayoutUpdatedイベント(百万回のヒット)を使うことはできません。Silverlightで新しいUIElementが追加されたときを知るにはどうすればいいですか?

答えて

1

子が追加/削除されると、Canvasは自動的に無効にされ、測定/アレンジサイクルが発生します。したがって、追加/削除操作を明示的に追跡する必要はありません。

代わりに、MeasureOverrideメソッドをオーバーライドして、メソッド内で子セットを確認し、変更内容を確認する必要があります。これは、SilverlightがWPFよりもはるかに難しい領域の1つです。 WPFのような子を格納する独自のコレクションを提供することはできず、既存のChildrenコレクションにイベントをフックできません。

0

私にはSilverlightの公開はありませんが、WPFではコントロールのLoadedおよびInitializedイベントを使用できます。 a blog from Mike Hillberg from MSDN

initializedイベント

詳細情報要素のプロパティがすべて設定されて を持っている時に初期化イベントは、一般的に を発射。具体的には、 はのFrameworkElement/FrameworkContentElementの ISupportInitializeを実装し、そのインタフェース のEndInitメソッドが呼び出されたときに、IsInitializedプロパティ がtrueに設定され、初期化 イベントが発生します。

Loadedイベント

要素 のみが初期化されていないLoadedイベントの火災は、それがレンダリングされようとして です。 Loadedイベントの動機付け は、 のシナリオで、 の初期化をアプリケーションで実行し、ロード時に になります。

関連する問題