この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

FrameworkElement.SizeChanged イベント

FrameworkElement ActualHeight プロパティまたは ActualWidth プロパティの値が変更されると発生します。

名前空間:  System.Windows
アセンブリ :  System.Windows (System.Windows.dll 内)

public event SizeChangedEventHandler SizeChanged
<frameworkElement SizeChanged="eventhandler"/>

SizeChangedEventHandler に基づくハンドラーを使用して、このイベントを処理します。

Silverlight レイアウト システムは、このイベントの SizeChangedEventArgs イベント データ クラス内のプロパティを読み取って、報告されたサイズ変更を意味のある変更と見なすかどうかを決定します。 これにより、高さや幅の古い値と新しい値との違いが目に見えないほどわずかな場合に、レイアウト システムで強制的にレイアウト変更が行われるのを避けることができます。 こうしたわずかな違いは、浮動小数点値の丸めや計算によって生じることがあります。

SizeChanged イベントは、EventArgs ではなく RoutedEventArgs から派生した特殊なイベント データを使用します。 ただし、イベントは通知しません (実際のイベント ルートをたどりません)。

SizeChanged ハンドラー内から、現在のオブジェクトのレイアウトに影響する他の API が呼び出されるのを厳密に回避する必要はありません。 たとえば、HeightWidth の設定、InvalidateMeasureUpdateLayout の呼び出し、ApplyTemplate の呼び出しなど、子要素のサイズを変更し、親のレイアウトを無効にするようなあらゆる操作がこれに該当します。 レイアウト エンジンには、ループ処理に関するさまざまな問題を回避することができる内部的なロジックが備わっています。 しかし、ハンドラーのロジックが周囲のレイアウトと協調しながら、対象のオブジェクトのサイズに関して最終的な結果に到達することができない場合は、サイズ変更またはレンダリングのループが形成される可能性が残ります。

SizeChanged は、オブジェクト上のサイズ (ActualHeight または ActualWidth) が変化したときと、測定パスと配置パスが完了した後に必ず発生します。測定パスと配置パスの概念については、「Silverlight のレイアウト システム」を参照してください。 親コンテナー内におけるオブジェクトの位置が変わっただけでサイズが変化しなければ、SizeChanged は発生しません。

同様のイベントとして LayoutUpdated がありますが、LayoutUpdated は位置が変化した場合にも発生します。 また、LayoutUpdated が発生する範囲は特定のオブジェクトのレイアウト プロパティに限定されません。オブジェクトが存在するビジュアル ツリー全体でイベントの発生が報告されます。 LayoutUpdated は、オブジェクトを含むビジュアル ツリー全体で何かが変更されたが、ハンドラーがアタッチされているオブジェクトのレイアウト特性 (サイズ、位置) が変更されていないことがあることを通知します。

Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

表示:
© 2015 Microsoft