2013-03-20 43 views
2

如果我有一個包含五行的網格,那麼Grid.Row值總是爲0,1,2,3和4.如果在設計期間我想在第一行之後插入一行,將其Grid.Row值設置爲1,但是我需要更新插入行下面四行的Grid.Row值。這很煩人,容易出錯。相反,如果Grid.Row的值是相對的(我不知道最好的詞來描述這個),我會將Grid.Row的值設置爲10,20,30,40和50.在在這種情況下,如果我想在第一行之後插入一行,我會將其Grid.Row值設置爲15.我不需要更改任何其他行。佈局引擎會知道將行按升序排列。是否有某些原因,Grid.Row值不這樣做?爲什麼WPF Grid.Rows是基於零的,而不是相對的?

HTML Z-指數值這樣的工作

回答

5

是有一些原因,Grid.Row值不這樣的行爲?

這就需要電網來確定可能行(通過遍歷它的所有子女)在它的佈局,然後放置物品。這會減慢並使佈局過關複雜化。

通過使網格行顯式化,避免了這種情況,它有助於佈局的整體性能在網格佈置它的子節點時通過。

HTML Z-指數值這樣的工作

僅供參考 - 在Canvas類,在WPF中,也使用了這種方法對於z索引。

+0

我很好奇,什麼時候佈局階段發生?當WPF程序被編譯?或者每次運行時加載它? – user2023861 2013-03-20 15:29:16

+3

@ user2023861無論何時需要 - 如果調整窗口大小等,則需要重新排列。有關詳細信息,我在這裏閱讀有關'MeasureOverride'和'ArrangeOverride':http://msdn.microsoft.com/en-us/library/ms745058.aspx#LayoutSystem_Measure_Arrange – 2013-03-20 15:30:48

相關問題