为什么WPF Grid.Rows是从零开始计数而不是相对的?

3
如果我有一个包含五行的表格,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值为什么不是这样工作的呢?
HTML的Z-Index值就是这样工作的。
1个回答

8
你有什么方法可以使Grid.Row的值按照某种方式起作用吗?
这需要在布局期间使Grid确定每一行的所有可能性(通过迭代其所有子项),然后放置项目。 这将减慢和复杂化布局过程。
通过显式指定网格行避免了这种情况,并且当Grid排列其子项时,它有助于整体布局的性能。
HTML的z-index值也是这样工作的。
顺便说一下,在WPF中,“Canvas”类也使用此方法进行Z索引。

我很好奇,布局阶段是什么时候发生的?是在WPF程序编译时吗?还是每次运行时加载时发生的? - user2023861
4
@user2023861:每当需要调整窗口大小等操作时,就需要重新排列内容。关于这方面的详细信息,建议参阅此处的 MeasureOverrideArrangeOverride 相关文档:http://msdn.microsoft.com/en-us/library/ms745058.aspx#LayoutSystem_Measure_Arrange - Reed Copsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接