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 を呼び出す必要がある場合は、一般的なレイアウト親の子要素のコレクションで Children.Add を呼び出した後、その親で UpdateLayout を呼び出して、レイアウト システムが新しく追加された子を認識した直後に呼び出す可能性があります。

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

Tip

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

適用対象

こちらもご覧ください