ده برتری WPF به Windows Forms Application

پرووید

دسته های مقالات

در این پست از وبسایت پرووید در رابطه با ده برتری WPF به Windows Forms Application صحبت خواهیم کرد. WPF به عنوان مدرن ترین تکنولوژی ساخت برنامه های دسکتاپ می باشد.

WPF سر آغاز سه کلمه Windows Presentation Foundation می باشد. هر کسی که تا به حال در محیط های گرافیکی و یا به اصلاح برنامه نویسان، محیط های ویژوال، برنامه نویسی کرده باشد، یقینا با مفاهیم Windows Application ها که گاها به صورت مخفف WinApp نیز نامیده می شوند، آشنا می باشد. این نوع برنامه نویسی همزمان با ورود سیستم عامل های ویندوز در دنیای کامپیوتر شروع شد و روز به روز با به وجود آمدن زبان های متفاوت جایگاه محبوبتری نزد برنامه نویسان پیدا کرد. در این رابطه توصیه می کنیم که از آموزش WPF دبلیو پی اف WPF دیدن کنید. علاوه بر این بسته توصیه می کنیم که از آموزش ساخت یک Enterprise Application با WPF و MVVM و Entity Framework نیز دیدن کنید.

اگر به دنبال یک سری آموزشی رایگان به صورت ویدئویی برای یادگیری WPF هستید ما استفاده از آموزش رایگان برنامه نویسی دبلیو پی اف WPF را توصیه می کنیم.

به عنوان اولین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید بگوییم که ساخت برنامه های WPF نستباً سریع تر است. البته این سرعت به شرط آن است که به راحتی بتوانید با XAML کار کنید و در واقع آن را به خوبی فرا گرفته باشید.

برای ساخت فرم های یک برنامه در پلت فرم Windows Forms باید کنترل ها را از جعبه ابزار به روی فرم قرار دهید و سپس پروپرتی های آن ها را تغییر دهید:

Designing a Form in WinForms1 Designing a Form in WinForms2

در حالی که برای ساخت یک فرم زیبا در پلت فرم WPF کافی است شروع به تایپ کردن XAML کنید. به علاوه، به راحتی می توان کدهای XAML خود را کپی / پیست کنید که این موضوع خود سرعت کار کردن بالا می برد.

Designing a Form in WPF

Designing a Form in WPF2

شاید یکی دیگر از موضوع هایی که برای اعمال این سرعت در ساخت برنامه های WPF به آن نیاز داشته باشید، تایپ ده انگشتی است. بنابراین، اگر از آن دسته از دوستانی هستند که فقط با دو انگشت تایپ می کنند، لطفاً فکری به حال خود کنید!

به عنوان دومین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید به این موضوع اشاره کنید که در WPF قرارگیری کنترل ها به صورت مطلق (Absolute) نیستند. کنترل ها در WPF به صورت نسبی (Relative) بر روی فرم قرار می گیرند. در تصویر زیر یک فرم ساده در پلت فرم Windows Form را می بینید که در آن یک کنترل Button بر روی فرم با پروپرتی های Left و Top به صورت مطلق بر روی فرم قرار گرفته اند:

Windows Forms uses Absolute Positioning

تصویر زیر یک فرم ساده ی WPF را نشان می دهد که یک کنترل Button به صورت Relative بر روی فرم قرار گرفته است.

WPF uses Relative Positioning

و کد XAML مربوطه:

WPF uses Relative Positioning2

یکی از موضوع ها بسیار مهم که این قابلیت WPF برای ما فراهم می کند هنگامی است که قصد داریم فرمی را ایجاد کنیم که مورد Resize قرار می گیرد. به عبارت دیگر، با تغییر اندازه در یک فرم WPF نیازی نیست که نگران قرار گیری درست کنترل ها باشید. تصویر زیر را مشاهده کنید:

Why Flow Layout is Better

با کوچک و بزرگ شدن فرم بالا، مکان دکمه ی Use this تغییر نمی کند و از سمت چپ و راست و پایین فاصله ی خود را با لبه های فرم به درستی حفظ می کند. این قابلیت از WPF را در برنامه های تحت وب نیز با استفاده از CSS پیاده سازی می کنیم.

در برنامه های تحت وب با استفاده از CSS کنترل ها به صورت یک Flow روی هم قرار می گیرند.

به عنوان سومین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید بگوییم که می توان برنامه های WPF را به راحتی در یک URL قرار داد و در واقع به عنوان یک برنامه ی تحت وب مورد دسترسی قرار داد.

دقت کنید که سیلورلایت و WPF بسیار شبیه به هم هستند و در واقع سیلورلایت یک زیر مجموعه ی سبک وزن از WPF است. برنامه های WPF و سیلورلایت را می توان به راحتی در یک URL قرار داد و به عنوان برنامه های تحت وب منتشر کرد. به تصویر زیر دقت کنید:

WPF Works for Websites

همانطور که در تصویر بالا می بینید یک برنامه ای WPF در مرورگر کاربر قرار گرفته و به عنوان یک برنامه ی تحت وب معرفی شده است.

به عنوان چهارمین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید به قابلیت استایل ها در WPF اشاره کنیم. فرض کنید که شبیه فرم زیر قصد داریم که ظاهر تمامی یا تعدادی از دکمه ی برنامه شبیه به هم باشند:

Styles are Much Better in WPF

بدون شک در Windows Form نمی توان به یک راه بسیار ساده برای انجام این کار فکر کرد، در حالی که در WPF تمام کاری که نیاز است انجام دهیم، تعریف کردن یک استایل است:

Styles are Much Better in WPF2

هر چند که استایل ها در WPF املای متفاوتی نسبت به CSS دارند اما ایده ی اصلی استایل های WPF و CSS یکی است.

در WPF حتی می توان Resource Dictionary تعریف کرد. Resource Dictionary ها دقیقا شبیه فایل های CSS هستند که مجموعه ای از استایل ها را در درون خود دارند. علاوه بر این، در استایل های WPF قابلیت وراثت نیز وجود دارد. با استفاده از این قابلیت می توان بعضی از خاصیت های تعریف شده در یک استایل را، در استایل دیگری استفاده کرد. تعریف استایل های اسم گذاری شده (Named Style) اجازه می دهند که کنترل بیشتری بر روی اعمال استایل ها روی کنترل ها داشته باشید.

به عنوان پنجمین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید گفت که به احتمال بسیار زیاد حوزه ی برنامه نویسی تحت ویندوز با آینده ی WPF گره خورده است. هر چند که امروز از Windows Form Application ها به شدت استفاده می شود ولی در این پست سه دلیل را برای اینکه WPF آینده ی برنامه های تحت ویندوز را رقم می زند، مطرح شده اند.

دلیل اول

اگر یک سرچ ساده در stackoverflow بزنید خواهید دید که تعداد سوالاتی که در رابطه با WPF پرسیده شده است بسیار بیشتر از Windows Forms است. به عبارت دیگر، برنامه نویسان از سر تا سر دنیا سعی دارند که برنامه های WPF بسازند و آنها را عملیاتی کنند. به عکس زیر توجه کنید:

Strength of User Base Strength of User Base2

دلیل دوم

به احتمال زیاد مایکروسافت WPF را به Windows Forms ترجیح می دهد.

حتی اگر به تغییر آیکون ویژوال استادیو در سالهای اخیر و حتی IDE ویژوال استادیو دقت کرده باشید، خواهید دید که از تکنولوژی WPF برای ساخت آن استفاده شده است:

Microsoft's Backing

هر چند که در ساخت یک برنامه ی تحت ویندوز، Windows Form Application در بالای WPF قرار دارد ولی در کل، به احتمال بسیار قوی مایکروسافت WPF را به Windows Form ترجیح می دهد.

دلیل سوم

دلیل سوم که احتمالاً آینده ی برنامه های تحت ویندوز را WPF رقم می زند، این است که WPF نسبت به Windows Form برتری های زیادی دارد که در همین مجموعه پست های آموزشی در وبسایت پرووید به آنها اشاره می کنیم.

به عنوان ششمین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید به قابلیت Data Binding در WPF اشاره کنیم. Data Binding یکی از ویژگی های بسیار جالب WPF است که در آموزش WPF دبلیو پی اف WPF و همچنین بسته ی آموزش سیلورلایت به آن اشاره کرده ایم.

با استفاده از Data Binding کارهای بسیار جالب و زیادی را می توان انجام داد. یکی از این کارها پیاده سازی الگوی MVVM است. نشان دادن داده ها در دیتاگرید نیز با استفاده از Data Binding بسیار ساده است:

Binding Data to a DataGrid in WPF

تنها کاری که لازم است انجام دهید تنظیم کردن DataContext مربوط به DataGrid است. به کد زیر دقت کنید:

 
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// create a connection to Top Trumps database
String cs = ConfigurationManager.ConnectionStrings["csMovies"].ConnectionString;
SqlConnection cn = new SqlConnection(cs);

try
{
// create a new dataset
DataSet ds = new DataSet();

// open the connection (not strictly necessary, as the
// data adapter will do this when you use it anyway)
cn.Open();

// fill data tables
SqlDataAdapter daMoviess = new SqlDataAdapter();
daMoviess.SelectCommand =
new SqlCommand("SELECT * FROM tblMovies WHERE PackId=1", cn);
daMoviess.Fill(ds, "Movies");

// now set the data context for the entire window
this.DataContext = ds;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{

// close the connection whether went wrong or not
cn.Close();
}
}

پس از آن با استفاده از پروتپرتی ItemsSource مربوط به DataGrid داده ها را نشان می دهید. به کد XAML زیر دقت کنید:

Binding Data to a DataGrid in WPF2

Data Binding دو طرفه

با استفاده از Data Binding دو طرفه می توانید به راحتی به رویدادهای دیتاگرید واکنش نشان دهید. برای مثال، کد زیر با دابل کلیک کردن روی یکی از آیتم های دیتاگرید اجرا می شود و آن آیتم کلیک شده را بر می گرداند:

 
private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)

{
// find out the row clicked on
DataRowView dr = dg.SelectedItem as DataRowView;

// get the field values for this row
string FilmName = (int)dr["FilmName"];
int FilmOscarWins = (int)dr["FilmOscarWins"];

// display choice made
MessageBox.Show(FilmName + ' ' + FilmOscarWins.ToString());
}

به عنوان هفتمین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید به این موضوع اشاره کنیم که در برنامه های WPF انتخاب کردن کنترل ها بسیار ساده تر از Windows Forms Application ها می باشد.

در نتیجه، ساخت واسط کاربری برنامه (UI) ساده تر می شود. به عکس زیر توجه کنید:

Selecting Controls in the Document Outline Window Selecting Controls in the Document Outline Window2

به علاوه، با انتخاب یک کنترل از این درخت سلسله مراتبی می توان ظاهر آن را سریعاً مشاهده کرد:

Selecting Controls in the Document Outline Window3

این موضوع کمک می کند که به صورت دقیق تر به واسط کاربری برنامه بپردازید و در توسعه ی برنامه سرعت زیادی را بدست بیاورید.

به عنوان هشتمین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید به Trigger ها بپردازیم. به طور کلی WPF شامل دو نوع Trigger است: Event Trigger و Property Trigger.

در کار با Windows Form اگر بخواهید پنجره ای را طراحی کنید که شامل یک TextBox باشد و با وارد شدن فوکوس به آن TextBox، رنگ Background تغییر کند، مجبور هستید که برای رویدادهای مربوط به TextBox کد نویسی کنید.

Property Triggers

در حالی که در WPF به راحتی می توانید با Property Trigger ها این کار را انجام دهید. به کد زیر دقت کنید:

Property Triggers2

با استفاده از Event Trigger ها می توانید بین کنترلهای مختلف پنجره ی WPF تعامل ایجاد کنید.

به علاوه، کارهایی شبیه انیمیشن ها و افکت های جذاب دیگر را انجام دهید. البته قبل از انجام این کار باید با StoryBoard آشنا شوید که موضوع پست بعدی از این آموزش است.

به عنوان نهمین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید به قابلیت پیاده سازی انمیشن ها اشاره کنیم. با استفاده از StoryBoard ها در WPF می توانید انیمیشن های جذاب ایجاد کنید. کاری که شاید انجام آن در Windows Form Application ها تقریباً غیرممکن باشد. به پنجره و کد زیر دقت کنید:

StoryBoards and Animations StoryBoards and Animations2

کد بالا پروپرتی Left مربوط به Ball را به 200 تغییر می دهد. این باعث می شود که توپ درون پنجره به مرور به سمت راست پنجره حرکت کند. به علاوه، پروپرتی AutoReverse با مقدار True تنظیم شده است که این باعث می شود با تمام شدن انیمیشن، اجرای آن بصورت معکوس دوباره از سر گرفته شود.

به عنوان دهمین برتری از مجموعه برتری های WPF نسبت به Windows Form Application ها باید به Drawing در WPF اشاره کنیم. در WPF همه ی شکل های تصویری که با XAML ایجاد می کنید Vector هستند. این موضوع باعث می شود که بتوانید بدون نگرانی از سایز یک شی یا پنجره، دستورات خود را تایپ کنید.

به عنوان مثال، بدون در نظر گرفتن سایز یک پنجره یا هر شی دیگری می توانید Background آن را تنظیم کنید:

Linear and Radial Gradient Brushes

به علاوه، کار کردن با Brush ها به شما این امکان را می دهد که هر چیزی را با انواع Brush ها پر کنید:

Image Brushes

Transition ها در WPF به شما امکان می دهند که یک تصویر را بچرخانید، کوچک و بزرگ کنید و تغییرات جالب دیگری را بر روی آن اعمال کنید:

Transitions

2 Comments

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *