【问题标题】:WPF - Why doesn't Microsoft supply a decent set of most-used controls ?WPF - 为什么微软不提供一套像样的最常用的控件?
【发布时间】:2010-12-21 09:02:14
【问题描述】:

我已经用 WPF 玩了几个月了,我非常喜欢它。 但是我不明白的一件事是为什么 MS 没有通过提供基本控件来帮助开发人员付出更多努力,我需要把它从我的胸膛中解脱出来:)

例如,我认为大多数应用程序都需要让您编辑一些属性 - 用于配置或其他任何内容。 属性网格编辑器中最常用的类型是什么?

  • 文字
  • 数字(字节、浮点/双精度、整数等)
  • 颜色

....等等

那么为什么没有像控件这样简单的东西来编辑数字呢?就像一个通用的 NumericUpDown 控件,它允许您输入数字(无文本,无粘贴无效输入)或根据某些给定规则(十进制、浮点、最小值/最大值)向上/向下旋转它们? 为什么没有通用的颜色选择器,以便人们在每个应用程序中获得相同的用户体验? 为什么没有 SearchTextBox、BreadCrumb 控件或用户在过去 10 年中已经习惯的所有其他标准控件类型的标准实现?

(..但至少他们确实有时间实现 通用启动画面 - 因为每个人都知道 极大地 提高了用户生产力....)

众所周知的理想始终是在不同的应用程序上为人们提供相同的用户体验。因此,即使其中一些控件很容易制作 - 最好使用一个版本而不是不同的应用程序。

我看到互联网上的人们一遍又一遍地尝试做同样的事情。 好的,所以 MS 在 Codeplex 上启动了一个 WPF Toolkit 项目,该项目试图实现一些控件,但只是半心半意地这样做,到现在完全死了(路线图的最后一次更新可以追溯到 2009 年 3 月 21 日)。

这样做的结果是,许多开始 WPF 项目的人最终会花费大量时间来试图弄清楚如何创建一些通用控件并感到非常沮丧。

“开发者、开发者、开发者”的口号不就是这样吗? ..?

/咆哮

【问题讨论】:

  • 这有点争论。除非您从团队中了解所做决策的内部人员那里得到答案,否则任何回应都是纯粹的猜测或主观的。
  • WPF toolkit 的计划功能列出了一个 NumericUpDown 控件,也许您可​​以在那里提交功能请求以加快速度?
  • 如前所述,WPF 工具包已死。 “计划中的功能”已经快 2 年没有更新了。

标签: wpf controls


【解决方案1】:

因为在 WPF 中制作这些内容非常容易。借助 WPF 和 silverlight,微软的重点是使许多任务(例如可样式化控件)变得非常简单的核心框架。工具比预建控件更重要。他们专注于 NEXT,而不是更好的 Winforms。

【讨论】:

  • +1 因为我认为这是迄今为止我们最接近真正答案的结果。但是,尽管我在某种程度上同意你的观点,但我也认为这个问题与这些控件的 标准 实现有关。如果让每个开发人员、团队或项目自行开发,应用程序可能会开始看起来像任何东西。这当然不会带来积极的、可预测的用户体验(不幸的是,我认为 this 的答案是我们已经在这条路上走得很好。我不喜欢它一点。)
  • 如果它非常简单,那么我想知道为什么根本没有一个好的 NumericUpDown 控件可以免费使用,它实际上适用于不同类型(字节、整数、双精度)正确的掩蔽正确的格式。给我一个链接,我会告诉你它有什么问题。
  • 但是再一次,为什么您希望人们不断为这些核心组件重新发明轮子?为什么提供通用的启动画面,而不是输入/编辑数字的标准方式?为什么希望在数字编辑器、颜色选择器、面包屑控件、搜索文本框等基本功能上为用户提供跨应用程序的相同用户体验?
  • @IUsedToBeAPygmy 在这里查看 numericupdown 控件:wpftoolkit.codeplex.com/… ...它有什么问题?
  • 人们也可以编写自己的组合框,但我很高兴有一个默认实现。
【解决方案2】:

我认为微软 - 以及这里的一些人 - 忘记了这篇文章中最重要的部分:

"众所周知的理想总是为人们在不同的应用程序上提供相同的用户体验。因此,即使其中一些控件很容易制作 - 最好有一个版本而不是不同的应用程序"

只需在“WPF 颜色选择器”(http://www.google.nl/images?q=wpf+color+picker) 上进行 Google 图片搜索,您就会发现这个想法付诸东流。

【讨论】:

  • winforms 颜色选择器会提供同样多样化的搜索:google.nl/images?q=winforms+color+picker 摆动颜色选择器也会:google.nl/images?q=swing+color+picker 人们总是拥有并且总是想要更多控制... wpf 为您提供这些而无需获得顺便说一句。这有点像我们不再使用匈牙利符号...时代变迁...程序员想要更多控制权。我一个人做了..并且喜欢 wpf
  • 嗯,那是因为 WinForms 也没有标准颜色选择器 - 所以我的情况是一样的 :) 我认为对于 lot 使用的标准控件在应用程序中,应该有一个标准版本。你想要更多的控制权,很好,然后你会自己动手。但是,为什么仅仅因为一个人可能需要更多的控制权就强迫每个人重新发明轮子呢?
  • 那一定是我见过的最丑的 ColorPicker :D
【解决方案3】:

这正是我在 WPF 开始时的想法..

但毕竟,使用自定义用户控件可以轻松创建 NumericUpDown,对于您将需要的所有控件都一样,您可以(几乎)没有时间自己创建它,或者抓取一些实现,然后您可以还是自定义

我认为他们为 UI 元素提供了非常基本的实现,并将所有自定义内容留给了开发人员和需要自定义内容的开发人员,如果他们会做一个通用的颜色选择器,也许它不会具有所有功能任何人都需要

【讨论】:

  • NumericUpDown 没有像您想象的那么容易创建。尝试构建/找到一个真正适用于微调器蒙版文本的体面实现 - 并在你这样做时告诉我:) 除此之外,问题是对于最常用的标准控件 -为什么您希望每个人都自己构建它们?这个想法应该是跨应用程序的用户体验的一致性,那么为什么要让开发人员这么难呢?将标准控件交给他们,如果他们需要更多东西 - 那么他们可以“轻松”自己制作,对吗?
  • 我创建了一个基本的 NumericUpDown,它的代码不多,尽管 =P,我还没有尝试让它与微调器和蒙版文本一起使用。事实是,如果有人需要控件来显示扑克游戏的一手牌,则可以创建它。显然,微软不会发布基本的“CardHand”用户控件,其他控件也是如此。我知道,像 NumericUpDown(已经是 Windows 窗体的一部分)这样非常基本的版本应该已经发布了,但也许它违背了产品的最终确定性..
  • 当然,没有微调器和屏蔽文本的 numericupdown 代码并不多。这两件事情很好实际上是一个好的NumericUpDown :) 我不认为cardhand 是最常用的控件。但是我正在输入的网络浏览器在多个地方使用 numericupdown-controls,我的文本编辑器、programming-ide、photoshop 等也是如此。
  • 我的 NumericUpDown 有一个验证器,可以通过 PreviewInput 处理程序、复制粘贴处理程序、MinValue 和 MaxValue 属性等来防止非数字值。我将其构建为了解用户控件的第一个练习之一在 WPF 中几个小时,所以,真的,这并不难.. 我可以在任何地方找到很多实现,它只是一个带有 2 个按钮的文本框,它不是 UI 的噩梦 =)
  • 感谢您的版本。但它只支持整数,这使得编码确实非常简单,因为您不需要支持浮点/双精度的复杂屏蔽(“0.04”,防止“0.00.4”等),字符串格式等。一个有用的 numericupdown应该能够使用任何数字类型,使用适当的掩码、格式等。
【解决方案4】:

有很多第三方供应商提供强大的自定义控件(编辑器、导航、网格、菜单、属性网格......)。

一般来说,从他们那里购买比重写你自己的要便宜(当然,当它适合你的需要时)。

从历史上看,微软一直鼓励围绕他们提供的开箱即用功能建立一个丰富的“基于组件”的生态系统。从使用 Microsoft 技术的组件编程(VBX、OCX 等)开始,情况就是如此。这是有争议的,但这就是策略:-)

【讨论】:

  • 对于更复杂/更少标准的控件,我可以理解。但是对于大多数应用程序中使用的控件?诸如“编辑号码”之类的东西?不得不为此付费(大多数第 3 方控制套件的价格 > 500 美元)对我来说似乎很荒谬。而且它完全违背了“在应用程序中保持相同的用户体验”的箴言,因为每个实现都会或看起来略有不同。
  • 顺便说一句,我想你已经看过 wpf.codeplex.com 了,这是一个 Microsoft 项目,其中包含许多额外的功能,其中一些将包含在下一个 WPF 版本中。
  • @Cody Gray - 我不确定是不是这个,因为他提到了 2009 年 2 月的日期,而在网站上,最新的发布日期是 2010 年 2 月。还有一个“扩展 WPF工具包”wpftoolkit.codeplex.com,我相信不是微软的工具包 - 而且它有一个 MaskedTextBox BTW :-)
  • @Simon:其中的控制部分是 WPF 工具包,其路线图已近 2 年没有改变,而 2 年前的路线图上的东西仍然没有被实施。 WPF Extended Toolkit 中的 NumericUpDown 不支持正确屏蔽或防止粘贴不正确的数据,Brian 也没有计划实施。
  • 嗯...我需要为低于 500 美元的组件开办组件业务!开个玩笑:-)
猜你喜欢
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
相关资源
最近更新 更多