UIElement.UpdateLayout メソッド

定義

UIElement の子オブジェクトのすべての位置が、レイアウト用に適切に更新されるようにします。

public:
 virtual void UpdateLayout() = UpdateLayout;
void UpdateLayout();
public void UpdateLayout();
function updateLayout()
Public Sub UpdateLayout ()

注釈

UpdateLayout は基本的に、 InvalidateMeasureInvalidateArrange を順番に呼び出すことと同じです。

UpdateLayout メソッドを使用して、組み込みのレイアウト システムの動作に依存するのではなく、アプリ コードによってレイアウトの更新を強制できます。 ただし、これは一般的には推奨されません。 通常は不要であり、過度に使用するとパフォーマンスが低下する可能性があります。 プロパティの変更により、アプリ コードから UpdateLayout を呼び出すのが適切な場合は、多くの場合、レイアウト システムで既に更新が処理されている可能性があります。 レイアウト システムには、親子リレーションシップを介したレイアウト変更の連鎖を処理するための最適化も用意されており、UpdateLayout を呼び出すと、このような最適化に対して機能します。 それでも、レイアウトの状況は、レイアウトに関するタイミングの問題やその他の問題を解決するための最適なオプションである UpdateLayout の呼び出しがより複雑なシナリオに存在する可能性があります。 意図的かつ控えめに使用するだけです。 UpdateLayout を呼び出す必要がある場合は、一般的なレイアウト親の子要素のコレクションを呼び出した後、その親で UpdateLayout を呼び出 Children.Add して、レイアウト システムが新しく追加された子を認識した直後に呼び出す可能性があります。

UpdateLayout の 1 つのシナリオは、RichTextBlock や RichTextBlockOverflow などのリンクされたコンテナーがある場合、コンテンツに対して実行時の変更を行い、UI の表示に特に関連付けられていない操作でレイアウトを実行し、リンクされたコンテナー間でコンテンツの再調整をトリガーできるようにする必要がある場合です。 たとえば、これを行って印刷用のレイアウトを準備することができます。 このシナリオの例については、「 印刷サンプル」の #5 シナリオを参照してください。

ヒント

UI へのデータ バインディングを使用していて、データ ソース コレクションの更新内容がレイアウトに反映されていないシナリオがある場合は、UpdateLayout を呼び出しても役に立たない可能性があります。 バインディング宣言、データ コンテキスト、またはデータ ソースの INotifyPropertyChanged または INotifyCollectionChanged サポートに問題がある可能性が高くなります。

適用対象

こちらもご覧ください