最近我开始使用WCF,我非常感动,我非常想知道如何更多地使用WPF,但是我对XAML的初步体验并不是那么好,大约1年前。
有所改进,交付真正与浏览器无关(可以在IE以外的浏览器上运行)。
开发生产力是否提高,代码/ ui分离更好?它需要学习银光吗?
如果您有使用WPF的真实经验,请说明专业和缺点。
答案 0 :(得分:12)
<强>首先强>
WPF与浏览器无关,因为WPF无法在浏览器中运行。
XBAP(现已弃用)和Silverlight在浏览器中运行,但两者都是WPF的子集。
<强>第二强>
WPF的主要好处是您可以创建的GUI结构的分层特性。如果你曾经做过ASP.NET编程,那么WPF比WinForms更自然。
WPF中的数据绑定是不同的,但更好,IMO。
底线:XAML及其复杂性是一个很大的学习曲线,WPF和XAML非常相似。但是一旦你理解了基础并且可以开始用它构建基本的GUI,你就永远不会再想要使用WinForms了。
关于优点和缺点,我会说WPF唯一真正的 con 是大的学习曲线。它可以完成从.NET角度来看WinForms可以做的所有事情,并且比WinForms更容易使用(一旦你理解它)。它可能“缺乏”的唯一地方是直接GDI +操纵,但你可能希望尽可能避免这种情况。如果在WPF项目中有必要,只需创建一个WinForms控件并在WPF中托管它。不是最优雅的解决方案,但它可以完成工作。
答案 1 :(得分:4)
如果您正在进行浏览器内部开发,则可能需要使用Silverlight。它类似于WPF,但与浏览器无关,在使用方面获得了很大的吸引力,以及微软的很多关注。 (例如,对于商业应用程序,新的RIA服务非常好。)
与用于UI开发的旧技术相比,WPF和Silverlight都提供了许多相同的好处,例如Windows Forms。
在我看来,一旦你克服了学习曲线,所有这些都会带来更好的长期发展。
答案 2 :(得分:4)
<强>缺点强>
WPF不是那么容易学习的。
WPF还很年轻。举例来说:要使用数据网格控件,您必须下载不受支持的WPF工具包。 Silverlight 3现在本身支持数据网格,我很确定VS 2010将数据网格转换为WPF。但成熟需要时间。
与任何技术一样,并不总是信任样品。我在野外看到了一些非常糟糕的XAML(甚至来自微软)。
<强>赞成强>
用户界面以声明方式表示为XAML中表示的对象层次结构,而不是仅允许通过鼠标进行交互的可视化设计器。 (Visual Studio和Expression Blend也有一个可在XAML之上工作的可视化设计器。)
将控件组合成灵活的布局面板并从字典中提取资源,可以创建一致且美观的流畅用户界面。除此之外,还增加了对图形元素的丰富支持,如矢量绘图,彩色渐变,透明度以及添加到此混合动画中,您可以使用工具创建真正令人惊叹的用户体验(如果您不知道自己是什么,则可以使用非常可怕的用户体验正在做。)
控件由布局和行为组成。您可以完全替换布局并保持行为。这比所有者绘制的按钮或带图像的列表框要先进得多。
对数据绑定的强大支持使得将应用程序逻辑分离到易于管理的层中变得容易。您再也不必在域模型对象中切换用户界面位。
WPF中的渲染模型不是GDI模型,在该模型中调用OnPaint方法来绘制窗口的特定区域。而是将元素添加到场景图(通常以XAML表示),然后使用DirectX渲染。在许多方面,这是一个更好的模型。
我对WPF的整体设计印象深刻,而在我看来,WPF的设计师真的很聪明,做得很好。但是使用WPF仍然是一个令人沮丧的经历,要么是因为你没有想出你的问题的“正确”解决方案,要么因为WPF的某些方面很烦人(比如当你想要自定义内置的一小部分时)控制并突然面临修改巨大的控制模板。)
正如你现在可能已经想到的那样,WPF不是Silverlight。相反,Silverlight是浏览器中WPF的“轻量级”版本。由于Silverlight不那么复杂,如果你不介意编写沙盒浏览器应用程序而不是桌面应用程序,那么获得一些XAML体验实际上是一个非常好的起点。
答案 3 :(得分:2)
我有WPF的实际经验,但不是WinForms。我已经使用WPF 8个月了,我觉得很有趣,易于学习,很难掌握。绑定,命令&amp;样式是最基本的WPF功能IMO,非常容易学习和使用。我知道WinForms中没有命令和样式,绑定是,但正如Randolpho所说,它是不同的。
此外,WPF使用DirectX来绘制它的图形,现在是GDI或GDI +,这也为绘制高级2D图形甚至3D图形提供了更大的灵活性。此外,由于它位于DirectX之上,因此GPU用于绘制所有图形而不是CPU(如GDI),因此在某种程度上,您使用的CPU处理能力较低。