2

WinForms 和 XAML 不能从与 CSS 相同的逻辑中受益吗?


今天早上,当我在 Stackoverflow 上浏览一些未回答的问题时,我突然想到:

如果您没有使用FlowLayoutPanelTableLayoutPanel来在您的 WinForm 上布局控件,您将被指责做得不对

这与 html 世界中关于CSS 与 Tables的(宗教)辩论形成鲜明对比。

在我看来,使用表格布局的 UI 的可维护性问题已被移植到 WinForms。XAML 可以被认为是 HTML 的一种形式,它包含了基于表格的布局。如果不使用表,您将很难在 XAML 中做任何事情。

WinForms 和 XAML 不能从与 CSS 相同的逻辑中受益吗?桌子的维护问题能不能解决?我意识到在使用表格布局的 WinForm 或 WPF 表单上,可访问性不是问题:读者不会“看到”布局面板 - 所以这是 CSS 中的问题,而 WinForms 中不存在。

但是 WinForms/XML 不能从基于非表格的布局中受益吗?我知道我当然不想以基于表格的方法将“确定”按钮 3 个对话框单元移到左侧。

4

4 回答 4

4

我认为您无法比较 HTML 和 XAML。XAML 中基于表格的布局(网格)的实现远远优于 HTML 表格。使用起来要容易得多,并且不会像 HTML 表格那样带来相同的负担(跨浏览器怪癖)。

另外我不同意你的评论...

如果不使用表,您将很难在 XAML 中做任何事情。

XAML 中有如此多的布局选项,您可以在不使用网格的情况下生成整个应用程序。虽然使用网格可能更容易,但这并不意味着您很难使用其他布局元素。事实上,我使用 Stackpanels 和 Canvases 和使用网格一样多。

这只是为每个场景使用正确元素的问题。我来自 Web 应用程序并且多年来一直在编写 HTML 和 CSS,我发现 XAML 是一个很棒的标记,它让你的界面布局变得轻而易举……更不用说 XAML 附带的所有其他东西了。

所以回答你的问题...... XAML 可以从 CSS 逻辑中受益吗?是的,确实如此,MS 从 CSS 中汲取了很多好处,但也产生了卓越的标记。

于 2009-07-06T15:42:12.907 回答
1

你说:

在我看来,使用表格布局的 UI 的可维护性问题已被移植到 WinForms。以及 XAML,可以认为是 HTML 的一种形式

但是你错过了 CSS 的重点。CSS 不是要避免使用表格布局,而是要从布局中分离内容。

在 HTML 中,HTML 提供“内容”(实际文本,它的结构为逻辑段落),CSS 提供有关如何布局此内容的信息,(理想情况下,您可以切换 CSS 文件以进行不同的显示方法和相同的内容将适当显示)

XAML/WPF 提供了相同的功能(WinForms 也提供了较小程度的功能)。XAML(或 WinForms GUI 代码)提供布局和可视化内容。后面的代码(最好遵循一些很好的分离模式,如用于 WPF 的MVVM或 WinForms 中的 MVC)提供了内容。如果编写得当,您应该能够替换 XAML(或 WinForms GUI 代码)并为不同情况提供替代布局/GUI。

基于表格的布局没有任何问题,使用纯 HTML 表格的基于表格的布局的问题在于它将内容和布局代码混合在一个大杂烩中。只有当您提供的内容本质上是表格时,才应使用 HTML 表格,然后仍应使用 CSS 规则对其进行布局和格式化。HTML 表格不应用于布局和格式化非表格内容。

所以 WPF/XAML 的结构已经像 HTML+CSS,只是你比较了错误的部分。XAML 提供布局并且相当于 CSS,而背后的代码(或 mvvm 中的视图模型/模型)在提供内容时相当于 HTML。

于 2009-07-06T15:41:50.273 回答
0

反对在 HTML 中使用表格进行布局的主要论据之一是语义和可访问性。<table> 标签旨在包含表格信息,对于具有屏幕阅读器和类似功能的用户来说,将它们用于布局目的可能会引起真正的头痛。但是,XAML 中的布局容器旨在包含控件并将它们定位在用户的屏幕上,将它们与相邻控件分开并适当地分组。

另一个问题是生成干净的代码。正确标记的 HTML 文档应该只包含文档内容,样式保存在单独的 CSS 文件中。XAML 文件更等同于 CSS,描述 UI 的布局,并将其与由您使用的任何语言的源文件描述的实际程序隔离开来。

仅仅因为 XAML 和 HTML 是 XML-ish 并不意味着它们封装了相同类型的数据。如果 CSS 是一种 XML 格式,您会将 XAML 与 HTML 还是此 (X)CSS 进行比较?

于 2009-07-06T16:04:51.167 回答
0

HTML/CSS 方案的问题在于它被设计为一种文档语言,而不是一种用户界面语言。演示与内容的整个分离实际上只会使文档受益。必须用没有网格布局的 HTML 开发用户界面是疯狂的。哦,好吧,它让我们有工作。

HTML 5 所采取的方向看起来有望减轻痛苦。不过,就目前而言,我将坚持使用 Flex 和 Silverlight 等 RIA。

于 2009-07-07T06:25:35.430 回答