两者都采用相同的概念:定义一些行和列,并将内容添加到特定位置。但是Grid是最常见的WPF布局容器,而html中基于表的布局是very controversial。那么,为什么要赞扬WPF的网格布局,而为什么html的基于表格的布局却被认为是“不好的”呢?
最佳答案
关键是WPF中的Grid被定义为一种布局机制,而HTML中的表格则用于标记表格数据,在WPF中通常会使用DataGrid或类似表格。
HTML在这方面的问题不仅仅在于您使用表格进行布局。实际上,CSS3 Template Layout Module并没有太大不同。问题在于表中的内容没有语义结构,因此屏幕阅读器,搜索引擎等无法访问。他们希望表格能够保存表格数据,因为任何视觉布局机制对没有视力的东西(例如屏幕阅读器,网络爬虫或盲人)都没有任何意义。
在WPF中,有多种解决方法。首先,WPF用于图形用户界面设计,因此具有很强的视觉 Root 性。这自然就意味着盲人有某种不合适的感觉。此外,Web爬网程序并不是真正的问题(有一阵子忽略XBAP;到目前为止,还没有看到它们)。除此之外,WPF还可以与Windows中的现有辅助功能一起使用,以确保屏幕阅读器可以像使用传统Windows应用程序一样使用UI。因此,您在这里获得的可访问性元信息比HTML中固有的更多。外部唯一可以访问的是完全渲染的网格。不是下面的标记,而是屏幕上某个位置的一系列控件。对于那些窗口,同样的规则也适用。
针对HTML中用于布局的表格的另一点是,您需要混合内容和表示,这使得仅更改其中之一变得困难,并且也使得很难单独访问内容(类似于屏幕阅读器和Web爬网程序的上述问题)。在WPF中,两者已经分开(通过数据绑定(bind)),如果愿意,可以通过构建自定义控件来封装布局的一部分,将字符串和图像拉入资源&c中,从而进一步分离它们。
总而言之,HTML没有适当的机制来构建复杂且吸引人的布局,而表格是解决该问题的方法(具有所有固有的弱点和问题)。另一方面,WPF是从头开始构建的,其技术和方法可以恰好解决这些缺点,并且实际上它们实际上是其中的最佳实践。
关于html - WPF的基于网格的布局与HTML中的忌讳的基于表格的布局不一样吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1516630/