次の方法で共有


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

ヒント

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

適用対象

こちらもご覧ください