TOC

This article is currently in the process of being translated into Bangla (~50% done).

About WPF:

WPF vs. WinForms

পূর্বের অধ্যায়ে আমরা WPF কি সেটা নিয়ে আলোচনা করেছি এবং WinForms নিয়ে সামান্য আলোকপাত করেছি। এই অধ্যায়ে আমরা এই দুটির মধ্যে তুলনা করবো যদিও তারা একই কাজ করে, তথাপি তাদের মধ্যে প্রচুর পার্থক্য রয়েছে। আপনি যদি এর আগে কখনো WinForms নিয়ে কাজ করে না থাকেন, বিশেষ করে WPF যদি আপনার প্রথম GUI ফ্রেমওয়ার্ক হয়ে থাকে তাহলে আপনি এই অধ্যায়টি বাদ দিয়ে যেতে পারেন। কিন্তু যদি আপনি তাদের পার্থক্য সম্পর্কে আগ্রহী হন তবে চালিয়ে যেতে পারেন।

WinForms এবং WPF এর মধ্যে অন্যতম সবচেয়ে গুরুত্বপূর্ণ পার্থক্য হল যে, যখন WinForms শুধুমাত্র স্ট্যান্ডার্ড উইন্ডোজ কন্ট্রোলের উপরে একটি Layer (যেমন একটি টেক্সটবক্স) তখন WPF এ কাজ করার সময় প্রায় সব পরিস্থিতিতেই Windows control এর উপর নির্ভর না করে স্ক্র্যাচ থেকে তৈরি করা হয়। এটি সামান্য পার্থক্য মনে হলেও বাস্তবিক ক্ষেত্রে সঠিক নয়। আপনি এটি লক্ষ করতে পারবেন যদি পূর্বে কখনো এমন কোনো ফ্রেমওয়ার্ক ব্যবহার করেন যা Win32/WinAPI এর উপর নির্ভরশীল ।

A great example of this is a button with an image and text on it. This is not a standard Windows control, so WinForms doesn't offer you this possibility out of the box. Instead you will have to draw the image yourself, implement your own button that supports images or use a 3rd party control. With WPF, a button can contain anything because it's essentially a border with content and various states (e.g. untouched, hovered, pressed). The WPF button is "look-less", as are most other WPF controls, which means that it can contain a range of other controls inside of it. You want a button with an image and some text? Just put an Image and a TextBlock control inside of the button and you're done! You simply don’t get this kind of flexibility out of the standard WinForms controls, which is why there's a big market for rather simple implementations of controls like buttons with images and so on.

The drawback to this flexibility is that sometimes you will have to work harder to achieve something that was very easy with WinForms, because it was created for just the scenario you need it for. At least that's how it feels in the beginning, where you find yourself creating templates to make a ListView with an image and some nicely aligned text, something that the WinForms ListViewItem does in a single line of code.

This was just one difference, but as you work with WPF, you will realize that it is in fact the underlying reason for many of the other differences - WPF is simply just doing things in its own way, for better and for worse. You're no longer constrained to doing things the Windows way, but to get this kind of flexibility, you pay with a little more work when you're really just looking to do things the Windows way.

WinForm and WPF এর প্রধান সুবিধাগুলির নিম্নোক্ত তালিকাটি সম্পূর্নই নিজস্ব। আপনি কি নিয়ে কাজ করতে যাচ্ছেন, তা সম্পর্কে এটা একটা তূলনামূলকভাবে ভালো ধারনা দেবে।

WPF advantages

  • এটা তূলনামুলকভাবে নতুন তাই সমসায়িক স্ট্যান্ডার্ড এর সাথে বেশি মানানসই
  • Microsoft অনেক নতুন এপ্লিকেশন এর জন্যেই এটি ব্যবহার করছে যেমন, Visual Studio
  • এটি তূলনামূলকভাবে নমনীয়, তাই নতুন control লেখা বা কেনা ছাড়াই অনেক কিছু করতে পারেন৷
  • যদিওবা 3rd-party control ব্যবহার করার প্রয়োজন হয়, সেগুলির ডেভেলপাররা সম্ভবত WPF-এর উপর বেশি ফোকাস করবে কারণ এটি তূলনামূলকভাবে নতুন।
  • XAML এর কারনে GUI তৈরি বা পরিবর্তন করা সহজ, এবং কাজ designer (XAML) এবং programmer(C#, VB.NET ইত্যাদি) এর মধ্যে ভাগ করে দেয়া সহজ।
  • Databinding, যা আপনাকে ডাটা এবং লেআউট কে পরিষ্কার ভাবে আলাদা রাখতে দেয়।
  • তুলনামূলকভাবে ভালো পার্ফর্ম্যান্স এর জন্যে GUI আঁকার কাজে Hardware acceleration ব্যবহার করে
  • এটা আপনাকে Windows Application এবং Web Application (Silverlight/XBAP) দুটোর জন্যেই ইউজার ইন্টারফেস তৈরি করতে দেয়।

WinForms advantages

  • এটা তুলনামূলকভাবে পুরনো তাই বেশি পরীক্ষিত
  • ইতিমধ্যে অনেক 3rd-party controls আছে যা আপনি কিনতে পারেন কিংবা বিনামূল্যে পেতে পারেন
  • এই লেখার সময় পর্যন্ত, Visual Studio এর designer, WPF এর চেয়ে WinForm জন্যে বেশি ভালো, যেখানে, WPF এর জন্যে আপনাকে নিজেকেই অনেকটা কাজ করতে হবে।