ما تا به حال در محیط ویندوز و پلت فرم برنامه نویسی دات نت برای طراحی رابط کاربری با دو انتخاب روبرو بودیم : فرم های ویندوز و فرم های وب. در مطلبی نوشتم که بسیاری از شرکت های نرم افزاری به اسفاده از فرم های وب تمایل بیشتری دارند، چرا که وب مدل توزیع آسان تر و قابل انعطاف تری به تولید کنندگان نرم افزار ارائه می کند و البته در قبال آن نیاز به مدل توسعه پیچیده تری دارد. در مقابل فرم های ویندوز امکان استفاده از نرم افزار کاربردی در حالت آفلاین و استفاده از کنترل های غنی را به توسعه دهندگان می دهد.
ظاهر فرم های وب با استفاده از کدهای HTML و CSS ایجاد می شوند و مرورگر وب وظیفه رندر کردن این صفحات وب را بر عهده می گیرد. در فرم های ویندوز ظاهر فرم با استفاده از کامپوننت ها و کنترل های نرم افزاری شکل می گیرد و کتابخانه های GDI و فایل USER32.dll در زیر سیستم گرافیکی ویندوز وظیفه رندر کردن ویندوز فرم ها را بر عهده دارند. رابط کاربری را از دو نظر می توان مورد بررسی قرار داد، از نظر زیبایی و غنی (Rich) بودن. فرم های وب به علت باز بودن دست شما در استفاده از فایل های مالتی مدیا معمولاً زیبایی بیشتری نسبت به فرم های ویندوز دارند. صفحات وب می توانند از فایل های عکس و ویدئو به راحتی استفاده کنند و با استفاده از کدهای CSS ظاهری زیبا داشته باشند. در فرم های ویندوز این زیبایی به راحتی وب بدست نمی آید، اما به جای آن کنترل های غنی بسیار زیادی که برای فرم های ویندوز وجود دارد در وب کمتر یافت می شود. غنی یا Rich بودن یک کنترل به این معنی است که آن کنترل به خوبی به رفتارهای کاربر و رویدادهایی که برایش اتفاق می افتد پاسخ می دهد. البته با آمدن تکنولوژی AJAX فرم های وب تا حدودی در این زمینه بهبود یافته اند.

Windows Presentation Foundation یا به اختصار WPF زیر سیستم گرافیکی جدید ویندوز است که روشی واحد برای طراحی رابط کاربری غنی و زیبا که می تواند از فایل های مالتی مدیا و افکت های دو بعدی و سه بعدی نیز استفاده کند، به توسعه دهندگان دات نت ارائه می کند. این سیستم جدید روشی فوق العاده قابل انعطاف تر از روشی که در Win32 و فرم های ویندوزی استفاده می شود به شما ارائه می کند. شما با استفاده از زبان XAML که در سیلورلایت هم مورد استفاده قرار می گیرد، رابط کاربری خود را می سازید. زبان XAML بر اساس فرمت XML به شما اجازه ساختن کنترل های WPF را می دهد و استفاده از آن به راحتی HTML خواهد بود.WPF کاملاً رابط کاربری نرم افزار شما را از منطق آن جدا خواهد کرد.
برای ایجاد فرم های WPF باید ویژوال استادیو 2008 را باز کنید و از قمست New / Project گزینه WPF Application را برگزینید. همانطور که در شکل زیر مشاهده می کنید، همانند فرم های ویندوزی، WPF نیز پنجره ای را در اختیار شما قرار می دهد تا کنترل های خودتان را روی آن قرار دهید. این کنترل های را می توان به صورت دستی با کدهای XAML ایجاد کرد و یا از Toolbox ویژوال استادیو روی پنچره قرار داد. با استفاده از این کنترل ها می توانید زیبایی خیره کننده ای به برنامه هایتان ببخشید.
یادگیری تکنولوژی های جدید همیشه برای بسیاری از افراد جالب و هیجان انگیز است و برای برخی هم سخت و دشوار. یادگیری WPF کار مشکلی نیست، فقط باید کمی روی آن وقت بگذارید و تمرین کنید. مقالات آموزشی بسیار زیادی در مورد یادگیری WPF در وب سایت های مختلف پیدا خواهید کرد. حتی می توانید کتاب های زیادی هم در مورد WPF به زبان انگلیسی روی اینترنت پیدا کنید. توجه داشته باشید که مایکروسافت تاکید بسیار زیادی بر روی WPF دارد و رابط کاربری سیستم عامل ویندوز 7 و دیگر نرم افزارهای خود را با استفاده از همین WPF توسعه می دهد. در واقع توصیه مایکروسافت به همه تولید کنندگان نرم افزار، استفاده از WPF در ایجاد رابط کاربری نرم افزارهای نسل آینده است. به احتمال بسیار زیاد هدف بلند مدت مایکروسافت از توسعه WPF حذف فرم های ویندوز و وب در آینده خواهد بود، پس از همین حالا شروع به یادگیری WPF و زبان XAML کنید.
شاید این مطالب هم برای شما خواندنی باشند :
- سیلورلایت 3.0 ارائه شد
- ظاهر جدید برای ویژوال استادیو 2010
- قبل از یادگیری Silverlight به چه مهارت هایی احتیاج دارد؟
پ.ن 1: اگر وقت اجازه بدهد، حتماً مطالب آموزشی در مورد WPF، XAML و سیلورلایت در این وبلاگ بیشتر مشاهده خواهید کرد.
پ.ن 2: Datefa را به CodePlex منتقل کردم، می توانید آخرین نسخه 2.4 پایدار به همراه سورس کد آن را از این سایت دریافت کنید.
پ.ن 3: مطلب آقای افشار محبی در مورد مفایسه WPF و WinForms برای مطالعه پیشنهاد میکنم.
پ.ن 4: وبلاگ Hyper Web مطالب تحلیلی با کیفیتی در مورد فناوری های روز می نویسد، خواندن این وبلاگ هم پیشنهاد می شود.







با خوندن این مطلب کلی ذوق کردم چون همین امروز برای اولین بار (غیر از مثال های کتاب های آموزشی ) از wpf و xaml برای طراحی پنجره های برنامه ام استفاده کردم. با همین تجربه ی کمم در استفاده از این بخش مطمئنا ترجیح میدم که در برنامه های بعدیم هم به جای فرم های ویندوزی از پنجره های wpf استفاده کنم
خوبه، البته به این زودی ها WPF جای ویندوز فرم را نخواهد گرفت. اما یادگیری و استفاده از اون لازم هست.
من هم مطلب کوچکی راجع به مقایسه WPF و Winforms نوشتهام: http://afsharm.blogspot.com/2009/03/wpf-winforms.html
مطلب خوبی بود، لینکش را در مطلب گذاشتم
سلام . این برنامه تاریخ شمسی دسکتاپ شما را دیدم . خیلی خوب و مفید بود .
فقط اگر امکان داشته باشه تعداد هشدا ها ( آلارم را بشه به سه تا یا 5 تا افزایش داد ) فکر کنم خیلی بهتر باشه . چون تو روز فکر می کنم کار های زیادی برای انجام و علامت گذاری وجود داشته باشه .
ضمنن اگر در زمینه گرافیکی قصذد توسعه اون را داشته باشید بنده با کمال میل می تونم GUI زیبایی را براتون طراحی کنم و المان های اون را بهتون بدم .
سلام. ممنون، فعلاً قصد اضافه کردن چنین امکانی را ندارم اما در نظر خواهم داشت. برای کمک به این برنامه می توانید در تدوین فایل راهنما و طراحی آیکون کمک کنید. با تشکر
در مطلب بالا در جایی که نوشته شده ظاهر جدید برای ویژوال استودیو 2008، ظاهرا اشتباه است و باید 2008 به 2010 تغییر کند
با تشکر از مطالب خوب شما. بیشتر بنویسید
تشکر از دقت نظر شما، تصحیح شد.
ممنون از توضیحاتی که دادید
مفید و مختصر
سلام
من به ياد دارم كه وقتي يك كامپوننت در #c درست مي كرديم براي هر Property كه وجود نداشت يك دستور Set مي نوشتيم ؛ مي تونيد بگيد كه درون محيط Expression Blend به چه صورتي اين كار رو انجام بدم !!؟
مرسي از مطالبتون
دوستاني كه از اين مطلب بازديد مي كنند منابع بيشتر خواستيد برام ميل بزنيد !!!
moh3ngraphic@ymail.com
سلام ایمان خان گل. مطلبت خیلی مفید بود. ممنون.
فایل راهنما را سعی میکنم بعد از امتحانات میانترم درست کنم، کامل! .
تشکر آقای ناشناس! امیدوارم امتحانات میان ترم را با موفقیت پشت سر بذاری.
[...] در framework 3.5 دات نت و ویژوال استودیو 2008 است. در اینجا و اینجا کمی باهاش آشنا [...]
ممنون از لطف شما.
[...] بیابید با هم WPF یاد بگیریم! [...]
merC
kheili mamnoon az maghale arzeshmandetoon
darzemn kheili khoshhalam ke az mohandes moosavi hemayat mikonid
جالبه
با سلام و خسته نباشید
از مطلب مفیدی که گذاشتید ممنونم
من یک WPF در پروژه خودم اضافه کردم چه جوری میتونم اونو به یکی از فرمهام اضافه کنم ؟
اگر جواب رو میدونید ممنون میشم به من اطلاع بدید یا ادرس سایتی در این رابطه میتونه به من کمک بکنه ممنونم
ostovarit@yahoo.com