WPF不使用Windows(pl.)用于控件的含义是什么?

Mar*_* Ba 2 windows wpf winapi hwnd visual-c++

似乎是一个经典的Windows TM所显示的每个控制(按钮,列表框,菜单,...)得到它自己的窗口(如应用程序HWND).

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

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

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

Han*_*ant 6

这不是新的.在ActiveX的时代,无窗口控件很受欢迎,VB6很重要.浏览器使用它们.Winforms也有它们,ToolStripItem类是无窗口的.像Telerik这样的组件供应商专注于它们.明显的优势是能够呈现更快,回填缺失的功能,更好地支持自定义样式和平台独立性.

后果是显而易见的.UI倾向于更快地老化,因为它不适应不断变化的操作系统外观.通常被引用为优势.自定义用户界面的行为与原生用户界面不同,往往会出现轻微的故障.WPF确实有一些.并且UI自动化更加困难,尽管在WPF中使用System.Windows.Automation命名空间进行了很好的介绍.

  • 无窗口控件可以完成所有自己的渲染,因此根据定义,它的外观会被及时冻结.从VB6应用程序非常明显,你可以识别一百英尺的应用程序.Winforms控件类是本机Windows控件周围的托管包装器,TextBox仍然是1985年的Edit控件.但看起来不像1985.WPF做得好的一个缺失功能​​是透明度. (2认同)