2

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

4

2 に答える 2

1

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

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

于 2009-04-18T15:49:30.403 に答える
0

Silverlight の経験はありませんが、WPF では、コントロールで Loaded イベントと Initialized イベントを使用できます。

詳細については、MSDN の Mike Hillberg のブログをご覧ください。

初期化されたイベント

通常、Initialized イベントは、要素のプロパティがすべて設定されたときに発生します。具体的には、FrameworkElement/FrameworkContentElement は ISupportInitialize を実装し、そのインターフェイスの EndInit メソッドが呼び出されると、IsInitialized プロパティが true に設定され、Initialized イベントが発生します。

ロードされたイベント

Loaded イベントは、要素が初期化されただけでなく、レンダリングされようとしているときに発生します。Loaded イベントの動機は、読み込み時にアプリケーションで何らかの初期化を行う典型的なシナリオです。

于 2009-08-11T13:17:19.027 に答える