簡體   English   中英

可以舉個例子,說明何時應該使用UIElement.UpdateLayout()?

[英]Can give me an example that when should use UIElement.UpdateLayout()?

我正在閱讀MSDN中的這個UpdateLayout()方法

它說:

確保為布局正確更新此元素的所有可視子元素。

但我不明白布局沒有正確更新是什么意思。

我已經使用Silverlight / WPF超過一年了,但我還沒有使用過這種方法一次。

那么有人可以給我一個需要使用這種方法的例子嗎? 所以我真的能理解它的作用以及何時使用它?

如果您需要一個控件來立即完成其布局,您可能想要調用它,以便您可以基於此做一些事情。 例如,你可以在子控件上調用UpdateLayout ,以便它獲得ActualHeightActualWidth ,如果你想根據它做其他事情(例如定位它,或繪制具有相應大小的東西)。

根據我的研究, UpdateLayout似乎是一種非常有力的方法,可以讓布局上的所有控件都更新。 但是,在大多數情況下,布局系統足夠智能且足夠快,可以自行更新。 我讀過的所有內容都讓我相信只有在你進行大量的布局修改(添加控件並移動它們)時才需要這個調用,並且你需要顯示一個特定的布局場景,而更新堆棧的其余部分是完成(但我仍然沒有看到一個很好的例子來顯示這個...正常的布局算法似乎就是那么好)。 這篇關於布局的MSDN文章應該有助於澄清事情。

但是,從上面來看:

UpdateLayout方法強制進行遞歸布局更新,並且通常不是必需的

這個文件

如果UI中存在大量元素,則頻繁調用InvalidateArrange,特別是對UpdateLayout,會產生顯着的性能影響。 除非您對代碼中其他API的后續調用絕對需要精確的布局狀態,否則請避免調用此方法。

最后直接回答你的問題。 這主要是通過內部UI布局邏輯自行完成的,您很可能永遠不需要使用它。 通過上面的描述,在我看來,當你確實需要使用它時會非常明顯(並且它不適合那么多的線程,包括我自己曾經想過的)

我認為在構建控件時最常用。 例如:如果在代碼中您感覺添加了新控件或發生了某些特定事件,您可以調用此UpdateLayout()來強制重新布局控件。 在某些情況下,WPF可能會認為UI已經足夠變化,因此它會自動調用控件的UpdateLayout()。 我們都犯錯誤......如果你發現一個控件應該“重繪”或“重新排列”它的孩子,你可以嘗試通過調用它的“UpdateLayout”來強制它“刷新”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM