2

看起来,在经典的 Windows tm应用程序中,每个显示的控件(按钮、列表框、菜单...)都有自己的窗口(如 中所示HWND)。

此外,在 Windows 窗体 (WinForms) 中,虽然控件不再使用经典的 Window 类,但每个控件仍然有自己的 Window ( HWND)。

但是,通过 WPF 创建的 Windows(复数)不使用单独的 Windows(复数)作为其控件。WPF 对话框上的按钮不是单独的窗口 ( HWND)。

问题

这对于我们(作为开发人员)可以使用 WPF 窗口以及它的控件与“经典”对话框窗口做或不做的事情有什么影响,其中不仅每个控件都有自己的HWND,甚至窗口类也是众所周知的( Button, #32770 (Dialog), ...)?

4

1 回答 1

6

这并不新鲜。无窗口控件在 ActiveX 时代很流行,VB6 大量使用它们。浏览器使用它们。Winforms 也有,ToolStripItem 类是无窗口的。像 Telerik 这样的组件供应商专注于它们。明显的优势是能够更快地渲染、回填缺失的功能、更好地支持自定义样式和平台独立性。

后果是显而易见的。UI 往往会老化得更快,因为它不能适应不断发展的操作系统外观。通常引用为优势。在自定义 UI 的行为与原生 UI 不太一样的情况下,往往会出现一些小故障。WPF 确实有一些。并且 UI 自动化更加困难,尽管在 WPF 中使用 System.Windows.Automation 命名空间很好地涵盖了这一点。

于 2013-04-27T20:30:35.103 回答