Microsoft has two main technologies to build native desktop applications, WPF and Winforms. If you are looking to pick a framework it is important that you have a good understanding of the features of each framework.
Winforms is a legacy framework to build desktop applications while WPF is the main framework promoted by Microsoft to build desktop applications.
In this article we will uncover the differences between WPF vs Winforms
What is Winforms?
Winforms (Window Forms) is a Graphical UI library by Microsoft in 2002 to build rich client windows based applications as a part of the .NET system. Winforms provides common controls like textbox, buttons, lists, grids, etc. by wrapping WINAPI/Win32 managed code. Window Forms development is very simple as it is based on a drag and drop placement of UI controls on canvas.
Benefits of Winforms
- Winforms was released in 2002 and has a large community behind it
- Winforms have a low learning curve as the UI can be built with a visual tool.
Drawbacks of Winforms
- Winforms is not supported in .net Core.
- Microsoft recommands WPF if you are building new applications as Winforms was officially deprecated in 2014.
What is WPF?
Windows Presentation Foundation (WPF) is Graphical UI library from Microsoft WPF is built on top of DirectX providing vector-based graphics. It provides diverse media types, recordings, 3D substance, and a lot of built-in animation. WPF provides craftsmanship interactive media enhanced visualizations. Allowing developers the ability to build flashy UI with limited effort.
Here we list main features of WPF.
- WPF depends on vector-based design, UI components are scalable to any size without distortion or pixelation.
- WPF can isolate application rationale code from the UI code. Visual Graphic Designer / Architect and Programming Engineer can work independently.
- WPF is equipped with built-in storyboard and animations.
- WPF supports 2D,3D graphics, and many Control templates to make UI more flexible.
- WPF application can likewise be utilized as an Internet application. The application can be embedded in the browser using XBAP/Silver light.
Key Differences Between Winforms and WPF
The following are the main differences between Winforms and WPF
Technology
WPF is a graphical User Interface based on Direct X with XAML Support. Winforms is a graphical User interface providing access to the native windows library of Common Controls.
Designing Methodology
Winforms uses event-driven controls. WPF utilizes markup language for designing the UI allowing the design of complex user interfaces.
Common Look and Feel
In WPF you have a common look and feel. In Winforms there’s is no common look and feel and you have to define a separate style for each object or component.
Data Binding
WPF usedData Binding. Data Binding provides an mechansim for data flow between the business layer and the UI. Change of data in the UI is reflected in the business layer and vice versa. Data binding provides an easy way to for application to interact and update data.
Declarative Programming
WPF utilizes Extensible Application Markup Language(XAML), which is the next level of declarative programming. The blend of WPF and XAML is like utilizing HTML to build a User Interface, however with an unfathomable scope of expressiveness.
Powerful Animation and Graphics
Winforms uses GDI or GDI+ for Graphics while WPF provides access to DirectX easily accommodating 2D,3D graphics, and animation objects.
Resolution Independence and Device-independent graphics
One of the major plus points of WPF over Winforms is Resolution Independency and device-independent Graphics. This means that WPF is not bothered or dependent on Monitor resolution.Because of vector-based innovation, the WPF application will look good on any resolution or device
Winforms are pixel-based, the application will become destorted on different Monitor resolutions.
Separation of Presentation and Logic
The most important discussion regarding the development point of view about WPF vs. Winforms is that WPF has a model where you separate Graphics User Interface logic from application logic. In Winforms, the Presentation layer is tightly bound with behind coding, WPF uses XAML for the presentation layer.
Faster Execution of WPF over Winforms
Winforms always is limited to software rendering technology while WPF can use hardware rendering.
Use cases when to choose Winforms and WPF
Now keeping in mind all the differences between the two frameworks we cover the use cases when you should use Winforms or WPF.
Scenario 1: Web Support
As we have already listed in WPF features, that WPF can run for both a desktop or web-based application, which is not for Winforms.
Hence if we are going to build some applications that we have the intention to use also as web then WPF is the best choice over Winforms.
WPF can be easily accommodated with its exiting look and feel in browers using XBAP (XAML Browser Application) or Silverlight.
Scenario 2: Cross Platform Support
WPF has now been included as part of the .net core framework which means that WPF applications can now run on linux and on mac os.
Conclusion
WPF has a lot of advantages over Winforms like Better GUI, Animation, 2D and 3D graphic support, Web application support, and faster acceleration and cross plagorm support.
If you are building a new application you should opt for WPF as it is the main development platform for native window applications. WinForm was officially depreacted by Microsoft in 2014. Use Winforms only if you still need to maintain legacy Winforms applications that cannot be ported to WPF