【问题标题】:Isn't WPF's grid based layout the same as table based layout that's taboo in html?WPF的基于网格的布局与html中禁忌的基于表格的布局不一样吗?
【发布时间】:2010-12-03 18:00:21
【问题描述】:

两者都采用相同的概念:定义一些行和列并将内容添加到特定位置。但是 Grid 是最常见的 WPF 布局容器,而 html 中基于表格的布局是 very controversial。那么为什么 WPF 的网格布局受到称赞而 html 的基于表格的布局被认为是“坏的”(被某些人)?

【问题讨论】:

  • 谁说表格在 HTML 中是“禁忌”?如果你有一张桌子,它看起来像一张桌子,感觉像一张桌子,嘎嘎声像一张桌子 - 为什么不用一张桌子来渲染它??
  • marc_s:在表格中呈现表格数据与误用表格作为布局元素不同。

标签: html wpf layout grid


【解决方案1】:

重点是 WPF 中的 Grid 被定义为一种布局机制,而 HTML 中的表格用于标记表格数据,您通常会在 WPF 中使用 DataGrid 或类似的东西。

HTML 在这方面的问题并不在于您使用表格进行布局。事实上,CSS3 Template Layout Module 并没有太大的不同。问题是表格中的内容没有语义结构,因此屏幕阅读器、搜索引擎等无法访问。他们期望一个表格来保存表格数据,因为任何视觉布局机制对于没有视力的东西(例如屏幕阅读器、网络爬虫或盲人)都没有任何意义。

在 WPF 中有多种方法可以解决这个问题。首先,WPF 是用于图形用户界面设计的,因此在视觉上非常扎根。这自动暗示着某种不适合盲人的地方。此外,网络爬虫并不是一个真正的问题(暂时忽略 XBAP;到目前为止还没有看到这些)。除此之外,WPF 与 Windows 中现有的辅助功能技术一起使用,以确保屏幕阅读器能够以与传统 Windows 应用程序相同的方式理解 UI。因此,您在这里获得的可访问性元信息比 HTML 中固有的要多。此外,唯一可以访问外部的是完全渲染的网格。不是它下面的标记,而是屏幕上某处的一系列控件。对于这些相同的规则也适用于任何其他窗口。

反对 HTML 布局表格的另一点是您将内容和表示混合在一起,这使得仅更改其中一个变得困难,并且也难以单独访问内容(类似于屏幕阅读器和网络的上述问题爬虫)。在 WPF 中,两者已经分开(通过数据绑定),如果您愿意,可以通过构建自定义控件来封装布局的一部分、将字符串和图像拉入资源等来进一步分开它们。

总而言之,HTML 没有适当的机制来构建复杂且吸引人的布局,而表格是该问题的解决方案(具有所有固有的弱点和问题)。另一方面,WPF 是从头开始构建的,其中包含解决这些缺点的技术和方法,它们在很大程度上实际上是那里的最佳实践。

【讨论】:

  • 这真的让你想,“为什么 HTML 5 不直接创建一个新标签 <grid>,其行为完全类似于 <table>,并拯救了整个 Web 开发社区头疼得厉害?”
  • 嗯,它已经到了那里,有点,有一些更高级的 CSS 布局。但是,如果有的话,这些仅在最前沿的浏览器中受支持,甚至在不同的浏览器中也不一致。但实际上,与专门为此目的构建的语言相比,HTML 仍然是一种相当糟糕的 (UI) 布局语言。
  • 我认为其中很大一部分与不了解真正的障碍有关。许多公司喜欢将他们的数据与布局混合在一起,因为它使抓取变得更加困难,但没有人愿意认识到这一点,因此他们不断推进在大量实际应用中被拒绝的想法。结果很糟糕。
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 2013-04-24
  • 1970-01-01
相关资源
最近更新 更多