2013-09-22 52 views
7

实际上,我已经开始学习WPF了。我有几个月的开发Windows Forms应用程序的经验。虽然,我得到了WPF应用程序的含义,但仍然无法根据它们的输出来区分两者之间的差异。显示WPF和Windows窗体应用程序的区别

参照这个Link: Device Independent Pixel (DPI),我了解到,无论何时操作系统呈现WPF应用程序,它都会根据其分辨率自行管理其大小。

因此,为了检查这种差异,我在两个框架中创建了两个演示应用程序,并更改了分辨率..但是我没有找到任何令人满意的区别。这可以解释它是一个WPF应用程序,这是一个Windows窗体应用程序。

它不会在最大化时创建任何滚动条,并且不会在更改分辨率时使按钮变大或变小。

我已经阅读过某些地方的视觉 工作室  2010已被重写在WPF中。但在我的实验中,我看到了(改变桌面的分辨率),它使文本和图形变得不可读/模糊。在重新调整窗口大小时,除了菜单栏外,所有内容都隐藏起来了。菜单栏内容正在改变其定位,例如,最右边的一个菜单项正在向下移动。为什么?

请让我正确&也解释一点点(这个显示问题)。

+0

我不知道你在说什么。 WPF独立于分辨率。 winforms不是。 WPF不是“模糊”,如果你有一个WPF应用程序,只是[改变字体渲染模式](http://stackoverflow.com/a/18091149/643085)看起来很模糊。 –

+1

WPF和WinForms之间的区别是,WPF不吸不是完全无用的说明(这里)(http://stackoverflow.com/a/18931755/643085)。不,如果你使用Visual Studio设计器创建一个WPF应用程序,它不会像解析[这里](http://stackoverflow.com/a/18927377/643085)那样是独立于分辨率的。您需要手动键入XAML并根据您的需要使用适当的容器。 –

+0

@HighCore:非常感谢您的回复!你想说,应该按照800 * 600硬编码我们的应用程序的高度和宽度,或者像明智地在css中编写媒体查询之类的东西!?!? – user2804762

回答

14

要正确回答这个问题,我可能不得不在这里写一整章,但我保持简短。从我迄今为止学到的,WPF应用程序和Windows Forms应用程序之间存在三个主要区别。

  1. 布局: WPF为我们安排视觉元素提供了更大的灵活性。它有一个聪明的幕后机制,可自动动态地找到每个元素的位置,而无需手动更新布局。例如:
    • 作为一个TextBox用户类型,它的宽度可能会增加,并推动其他元素保持距离,或者它可能会推动一些元素融入到新行(就像你看到的菜单栏)
    • 随着大小的控件更改会影响其他元素的可用空间,因此其大小和位置可能会相应更改。
    • 重新调整窗口大小或更改分辨率时,会立即更新布局并更改元素的大小以填充或适合空间。 (不要指望一个按钮的大小,当你一半分辨率提高一倍。它不这样的。基本上,它首先测量每一个元素,然后安排他们)

Here you'll find out more about Layouts.

  1. Rendering:在Windows窗体应用程序和WPF应用程序中尝试使用30x30 TextBoxes的网格。不管你编写WPF多么混乱,它仍然比Windows Forms快得多,如果你写得正确,它不会眨眼一秒。想象一下其中的一些动画,效果,触发器和样式层次,仍然比Windows窗体快得多。

    • 另外它使用double类型的Sizings,因此你可能会看到边缘模糊有时,但它可以避免(SnapToDevicePixels)。 备注:为避免Windows窗体应用程序中的速度下降和闪烁,应将表单的DoubleBuffer设置为“true”。
  2. 最后也是最重要的:重点介绍:这似乎有些奇怪,但是当你选择WPF,你必须停止在Windows窗体思(许多活动和控件的名称和批号的的代码),并开始思考WPF(绑定,命令,资源,样式,模板,转换器,DependencyProperties及其回调)。

    • WPF的真正力量在于在“查看”和“逻辑”的分离,一旦你得到了它的窍门,还有你如何呈现“查看”没有限制。
    • 更重要的是,MVVM pattern使得视觉复杂程度最高的应用程序非常简单并且易于开发。

如果你打算切换到WPF,你做出正确的决定。 始终坚持计划!即避免代码后面(在.xaml.cs文件编码),XAML名称(除非只在XAML使用)和UI事件尽可能。改为使用WPF能力。

5

Windows窗体(的WinForms)和的Windows Presentation Foundation(WPF)是构建用户界面的应用程序的两种不同的方式。 Windows窗体是旧技术,其控件可在System.Windows.Forms namespace中找到。 WPF是一种较新的技术,其控件可在System.Windows.Controls命名空间中找到。

WPF

优点:

  • 强大的造型和外观结构
  • 轻松创建自己的外观和感觉
  • 是否支持Windows窗体
  • 未来的技术发展Windows   Vista应用程序
  • 重用现有代码
  • 非常先进的数据绑定可能

缺点的能力:

  • 声明与程序代码
  • 需要的.NET Framework 3。0
  • 相较于Windows窗体,仍处于发展阶段
  • 需要先进的图形Dx9中兼容的视频卡

Windows窗体

优点:

  • 大量文档,在互联网上找到
  • 大量的例子
  • 是否支持WPF

缺点:

  • 多久这种支持? (我读过微软现在只是开发WPF,只维护Windows窗体的地方)。
  • 设计您自己的外观和在应用程序中感受到的是大量的工作。
相关问题