What is the difference between WPF and WinForms?

前端 未结 7 982
春和景丽
春和景丽 2021-01-30 21:30

I am programming simple Windows apps. I don\'t need DB support. Why would I use WPF instead of WinForms?

相关标签:
7条回答
  • 2021-01-30 21:31

    If you want to have a rich user interface like the image posted in your previous question, I'd recommend going with WPF. Aside from making it easier to create a nice-looking application, it's also the technology Microsoft will push in the future. There's almost no new development for Winforms.

    0 讨论(0)
  • 2021-01-30 21:36

    WPF is the current platform for developing Windows desktop applications. It is a modern, advanced, hardware accelerated framework for developing applications that maintain separation of concerns. It supports advanced rendering of 2D vector and 3D graphics, providing an immense range of capabilities for building rich, interactive, and quality user interfaces.

    WinForms, on the other hand, provides a basic platform for developing "classic" Windows apps with your standard look and feel using standard controls. It does not offer the rich, hardware accelerated, vector 2D and 3D capabilities that WPF offers. WinForms applications tend to have much greater coupling between application behavior and UI (view), which presents a less flexible platform upon which to develop applications.

    As for which one you choose, it entirely depends on your needs. If you need vector graphics, 3D rendering, the ability to create rich, interactive, animated, modern user interfaces, and/or wish to maintain separation of concerns, WPF is definitely the right choice. If you need none of that, and just need to create a simple UI that solves a simple problem, WinForms will meet your needs just fine.

    0 讨论(0)
  • 2021-01-30 21:38

    One obvious answer is that WPF offers a richer user experience than WinForms, allowing for animations (even 3D) in the user interface, for example.

    From a development perspective, it goes a long way to enforce the separation of the User Interface (in the XAML) from the business logic (in VB.NET or C#), which is always a good thing.

    A Google search for "WPF vs WinForms" brings up lots of pages that discuss this issue. I won't repeat all their findings here, but this page raises some interesting points:

    1. Databinding in WPF is superior to what Windows Forms offers.
    2. UI and C# business logic can be cleanly separated in WPF
    3. Storyboard
    4. Data/control templates – a much cleaner way than anything Windows Forms can offer.
    5. Styles – cool and simple. Its so easy to style all your buttons in an application to have the same look and feel.
    6. Even if the VS designer breaks, its easy to code XAML.
    7. UI virtualization – I’ve got grids with 100K rows, ticking off a moving market. Performance would be dreadful if it wasn’t for UI visualization which come for free.
    8. 3D support.
    9. Nothing scientific but, UI development feels quicker in WPF – maybe its just because a WPF application looks cooler at the end of an iteration, or maybe its because development really is quicker.
    10. I can add a User Experience engineer to my team, and with no C# knowledge he can work magic in Expression Blend and give the front-office trading application a makeover that is guaranteed to win over the business users.
    0 讨论(0)
  • 2021-01-30 21:42

    Nobody mentioned about better testing capabilities of the WPF applications (if they are written in the correct way, for example based on the MVVM pattern).

    0 讨论(0)
  • 2021-01-30 21:45

    WPF can utilize hardware acceleration to some degree, but that is expected to improve over time.

    Also, because of XAML, you have more options for "doing stuff", declarative vs. programmatic, or a mixture of both.

    Microsoft no longer does active development on WinForms, they are strongly pushing WPF, and for good reason.

    WPF allows for much easier "resolution agnostic" designing. To achieve that in WinForms, it is a lot more work.

    The MVVM pattern was already mentioned in one of the comments, this allows one to do real unit testing vs. GUI-based testing on your code, that is a big win, in my experience.

    0 讨论(0)
  • 2021-01-30 21:48
    • To learn.
    • To have greater (i.e. any) control over the appearance of your program
    • To benefit from easier data binding, triggers, styles

    (I don't see what DB support has got to do with it)

    0 讨论(0)
提交回复
热议问题