Java WPF是一件非同寻常的事情吗?

Java WPF是一件非同寻常的事情吗?,java,.net,wpf,user-interface,Java,.net,Wpf,User Interface,只要我编程,我总是用微软技术。有DOS、MFC、VB6,然后是带WinForms的.net,现在是WPF 在所有这些技术中,GUI都或多或少是相同的,因为它基于Win32(DOS除外)。有了WPF,一切都完全改变了。MS引入了许多新的可能性,从构建UI的声明方式、无外观控件、动画等等开始。我非常喜欢这种新的UI技术,也喜欢它下面的基本原理(DependencyProperty系统、RoutedEvents等等) 但我不知道的是,因为我一直使用MS技术,这整个结构是否是MS特有的发明,或者这些东西

只要我编程,我总是用微软技术。有DOS、MFC、VB6,然后是带WinForms的.net,现在是WPF

在所有这些技术中,GUI都或多或少是相同的,因为它基于Win32(DOS除外)。有了WPF,一切都完全改变了。MS引入了许多新的可能性,从构建UI的声明方式、无外观控件、动画等等开始。我非常喜欢这种新的UI技术,也喜欢它下面的基本原理(DependencyProperty系统、RoutedEvents等等)

但我不知道的是,因为我一直使用MS技术,这整个结构是否是MS特有的发明,或者这些东西是否只是技术和模式的良好组合,这些技术和模式是最先进的,并在许多其他现代环境中使用


是否有一些关于显示链接和常见模式的现代UI技术的比较信息?

正如您所说,这不仅仅是MS特有的结构。还有其他基于相同原则的类似技术(类似于XML的UI定义标记)——JavaFX、AdobeFlex、Flash等。我找不到关于每种模式中使用的常见模式的任何具体信息,但在我看来,WPF受到了其他一些技术的启发,例如Swing/Java中的StackPanel。同样,拥有一个描述UI的XML和一个单独的代码文件的概念以前也有过——请参阅AdobeFlex,其中有XML和ActionScript

但是,微软在设计WPF时做得很好。他们肯定受到了其他一些概念的启发,但肯定增加了一些很棒的功能,比如DependencyProperties,据我所知,这是一个新概念(如果我错了,请纠正我)


此外,WPF似乎是一种非常经得起未来考验的技术,因为微软不仅在Windows桌面操作系统上推出了WPF,而且在Silverlight上也推出了WPF,因此也适用于Web解决方案和即将推出的Windows Phone 7

对我来说,WPF是所有其他MS技术中最好的技术。我已经使用它一段时间了,我应该说我很高兴我们有了比WinForms更好的东西。WPF对于微软来说是非同寻常的,但在某些方面,比如动画,对Adobe这样的其他公司来说却不是。动画在Flash中要强大得多。为了使动画能够同时流畅地工作,您可能需要在较低级别的.NET上编写代码,并且需要一个好的图形卡

如果你学习图形技术,你会发现WPF并不是那么了不起——它是现代硬件和现代Windows上一些非常成熟的概念的实现。举例来说,我书架上1991年出版的一本旧书“包含了很多WPF所基于的思想

WPF与GDI(前身Windows图形系统)最根本的区别可能在于WPF是保留模式图形系统,而GDI是非保留模式。这意味着在WPF中,有一个可视树,表示要查看的可视场景的数据结构定期被剪裁和光栅化,并且该数据结构始终保留在内存中,由WPF本身管理

一旦理解了这一点,即WPF的核心是一个表示场景的树结构,人们就会发现,其余部分是建立在处理在成熟的3D显示系统(DirectX)上光栅化视觉树的细节的原则之上的。线程的分层(
DispatchObject
)、数据绑定机制(
DependencyObject
)以及布局、输入、焦点、事件(
UIElement
)和样式(
FrameworkElement
)等UI习惯用法都是Win32或其他UI构造中思想的自然演进。举一个后一种情况的例子:尽管Win32中从来没有像
DependencyObject
这样的东西,但一种流行的3D工具(Maya)也有一个类似的子系统,它将3D场景表示为有向非循环图,其中节点具有属性,当属性更新时,值通过图中的节点连接推送,所有对该属性感兴趣的节点都会收到新值的通知。由此可以看出,一旦有了一个中心数据结构(树或图形),对新功能的分层就是一个直截了当的软件工程问题


在陈述了所有这些之后,WPF应该得到认可:它是一个成熟的成果,体现了数十年来在构建用户界面和图形技术方面的研究、尝试和错误,并且为将来构建富客户端应用程序奠定了坚实的基础。

XUL是另一种用于UI设计的XML标记。+1这正是我在发布问题时希望得到的答案。可惜只能投一次票。(这句话绝对不意味着我不欣赏其他答案!非常感谢大家。它帮助我对我整天使用的技术进行分类(我真的很喜欢))很高兴给出这样的答案。。。WPF是一种非常好的技术,了解其背后的历史是令人满意的。WPF的特点是无外观控件,ControlTemplate概念。它能够完全分离控件的逻辑和外观/行为,这在任何其他UI框架中都是不可用的。此外,可视化状态机、很好地解决的布局计算和可附加行为也是解决方案的重要改进。WPF给了UI设计者很大的自由。他/她几乎可以在不与开发人员交互的情况下做任何事情。对我来说,WPF的弱点是数据绑定。它需要一个富有表现力的DSL。完整的包并不完美,但imo是迄今为止提供的最佳解决方案。QtWidgets具有无外观控件。90年代末,网景公司的XUL以HTML+CSS为灵感,采用了无外观控件。还有3D设计应用程序,我称之为具有视觉树(称为场景图)的早期表示和依赖属性系统al