語言

UIElement.UpdateLayout 方法

定義

確保 UIElement 中所有子物件的位置都正確更新以進行版面配置。

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

備註

UpdateLayout 基本上等同於依序呼叫 InvalidateMeasure 和 InvalidateArrange 。

版面更新可以透過應用程式程式碼強制執行,而非依賴內建版面系統的行為,方法是使用 UpdateLayout 方法。 不過,通常不建議這麼做。 通常不需要,過度使用會導致效能下降。 在許多情況下,因為屬性變更,從應用程式程式碼呼叫 UpdateLayout 可能更合適,layout 系統很可能已經在處理更新。 版面系統也有優化機制,能透過父子關係處理一連串的版面變更,呼叫 UpdateLayout 可以對抗這些優化。 然而,在更複雜的情境下,也有可能存在呼叫 UpdateLayout 來解決時間問題或其他版面問題的最佳選擇。 只要刻意和謹慎地使用它。 如果你真的需要呼叫 UpdateLayout,通常會在 Children.Add 呼叫一個共同 layout 父元件的子元素集合後,再呼叫該父元件的 UpdateLayout,讓 layout 系統辨識新加入的子元件。

UpdateLayout 的一個情境是,當你有像 RichTextBlock 和 RichTextBlockOverflow 這類連結容器時,你已經對內容做了執行時變更,你想確保那些非專門顯示介面的操作有機會執行版面配置,並觸發連結容器間的內容重新平衡。 例如,你可能想這麼做來準備印刷版面。 此情境範例請參見 列印範例中的#5情境。

Tip

如果你用資料綁定到 UI 但沒看到版面反映在資料來源集合中的更新,呼叫 UpdateLayout 可能幫不上忙。 你更可能遇到的是綁定聲明、資料上下文,或是資料來源中的 INotifyPropertyChanged 或 INotifyCollectionChanged 支援。

適用於

另請參閱