两者都采用相同的概念:定义一些行和列并将内容添加到特定位置.但Grid是最常见的WPF布局容器,而html中基于表格的布局是非常有争议的.那么为什么WPF的网格布局受到称赞并且html的基于表格的布局被认为是"坏"(某些人)?
关键是WPF中的Grid被定义为布局机制,而HTML中的表用于标记表格数据,在WPF中通常使用DataGrid或类似物.
HTML在这方面的问题并不在于您使用表格进行布局.事实上,CSS3模板布局模块并没有太大的不同.问题是表中的内容没有语义结构,因此屏幕阅读器,搜索引擎等是不可访问的.他们希望表格能够保存表格数据,因为任何视觉布局机制都无法对没有视力的东西(例如屏幕阅读器,网络爬虫或盲人)产生任何意义.
在WPF中,有各种方法可以解决这个问题.首先,WPF用于图形用户界面设计,因此非常直观.这自然意味着盲人的某种不适应性.此外,网络爬虫并不是一个真正的问题(暂时忽略XBAP;到目前为止还没有看到过那些).除此之外,WPF还与Windows中的现有辅助功能技术配合使用,以确保屏幕阅读器能够以与传统Windows应用程序相同的方式理解UI.因此,您在此处获得的可访问性元信息比HTML中固有的更多.此外,唯一可以访问外部的是完全渲染的网格.不是它下面的标记,而是屏幕上某处的一系列控件.对于那些适用于任何其他窗口的规则也是如此.
HTML中布局表格的另一个观点是,您混合了内容和演示文稿,这使得很难仅仅更改其中一个内容并且难以单独访问内容(类似于屏幕阅读器和网络抓取工具的上述问题).在WPF中,两者都已经分开(通过数据绑定),如果您愿意,可以通过构建自定义控件来封装布局的各个部分,将字符串和图像拉入资源等,以进一步分离它们.
总而言之,HTML没有适当的机制来构建复杂且吸引人的布局,而表格是解决该问题的方法(具有所有固有的弱点和问题).另一方面,WPF是从头开始构建的,具有解决这些缺点的技术和方法,并且它们在很大程度上实际上是最佳实践.