
آموزش الگوی MVVM پیشرفته در دبلیو پی اف (WPF)
آموزش الگوی MVVM پیشرفته در دبلیو پی اف WPF یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی معماری MVVM عمیق است که با نام اصلی WPF MVVM In Depth از شرکت Pluralsight منتشر شده است.
MVVM چیست؟
به عنوان یک توسعه دهنده ی نرم افزار در تکنولوژی های WPF و Silverlight چرا باید با الگوی MVVM آشنا بوده و نحوه ی پیاده سازی آن و نکاتش را بدانید؟
- آیا شما به عنوان یک توسعه دهنده ی نرم افزار بصورت همزمان با یک طراح واسط کاربری بر روی یک پروژه کار می کنید؟
- آیا به Unit Testing کامل نیاز دارید؟
- آیا داشتن Component هایی که قابل استفاده مجدد یا اصطلاحاً Reusable هستند برای شما مهم است؟
- آیا تغییر واسط کاربری نرم افزار بدون هیچ تغییری در کار منطق تجاری (Business Logic) برای شما اهمیت دارد؟
اگر جواب یکی از سوال های بالا “بله” باشد، شما نیاز به استفاده از MVVM در برنامه های خود دارید.

الگوی طراحی MVVM یک عضو جدا نشدنی از توسعه ی نرم افزار با WPF و Silverlight است. بعد از یادگیری این الگو و نحوه ی پیاده سازی آن خواهید دید که ویژگی های WPF و Silverlight چنان از الگوی MVVM پشتیبانی می کنند که پیاده سازی یک نرم افزار در این تکنولوژی ها بدون این الگو کار دشوارتری خواهد شد. تعدادی از این ویژگی ها در WPF و Silverlight که این دو را برای پیاده سازی الگوی MVVM بسیار مناسب کرده است عبارت اند از:
سیستم Data Binding وجود Data Template ها Command ها
جالب است بدانید که خود مایکروسافت از MVVM برای تولید نرم افزارهایی شبیه Expression Blend استفاده کرده است.
ارتباط View و ViewModel در معماری MVVM
در برنامههای WPF که با الگوی MVVM طراحی میشوند، ارتباط میان View و ViewModel نقش مهمی در جداسازی رابط کاربری از منطق برنامه دارد. View مسئول نمایش عناصر بصری است و ViewModel دادهها و رفتارهایی را فراهم میکند که رابط کاربری برای نمایش و تعامل به آنها نیاز دارد. طراحی صحیح این ارتباط کمک میکند تغییرات ظاهری برنامه تأثیر کمتری بر منطق آن داشته باشند و هر بخش مسئولیت مشخصتری در ساختار نرمافزار داشته باشد.
در این آموزش پیشرفته، روشهای مرتبط کردن Viewها و ViewModelها و همچنین شیوه برقراری ارتباط میان آنها بررسی میشود. آشنایی با این مفاهیم برای توسعهدهندگانی مفید است که میخواهند برنامههای WPF را با ساختاری قابل نگهداریتر طراحی کنند. شناخت الگوهای ارتباطی مناسب، درک وابستگی میان اجزای رابط کاربری را سادهتر میکند و زمینه را برای پیادهسازی قابلیتهای پیچیدهتر در برنامه فراهم میسازد.
پیادهسازی Navigation و Hierarchy در WPF با MVVM
در برنامههای بزرگتر، رابط کاربری ممکن است از چندین صفحه، View یا بخش تودرتو تشکیل شده باشد. مدیریت ارتباط میان این بخشها و تعیین مسیر حرکت کاربر، به ساختاری نیاز دارد که با معماری برنامه هماهنگ باشد. در الگوی MVVM، توجه به Hierarchy و Navigation کمک میکند نمایش Viewها از منطق اصلی برنامه جدا بماند و جابهجایی میان بخشهای مختلف رابط کاربری به شکلی سازمانیافته انجام شود.
در این دوره، پیادهسازی Hierarchy و Navigation بخشی از مباحث عملی MVVM است. این موضوع برای توسعهدهندگانی اهمیت دارد که میخواهند برنامههایی با چندین صفحه یا نمای مرتبط طراحی کنند. درک نحوه مدیریت ساختار نماها و جابهجایی میان آنها به کاهش وابستگیهای غیرضروری کمک میکند و باعث میشود توسعه قابلیتهای جدید با ساختار موجود برنامه سازگاری بیشتری داشته باشد.
اعتبارسنجی دادهها در الگوی MVVM
اعتبارسنجی دادهها یکی از بخشهای مهم برنامههای دارای فرم و ورودی کاربر است. در WPF، اعتبارسنجی میتواند به شناسایی مقادیر نامعتبر و ارائه بازخورد مناسب در رابط کاربری کمک کند. در معماری MVVM، لازم است جایگاه این منطق بهدرستی مشخص شود تا مسئولیت بررسی دادهها با ساختار برنامه هماهنگ باشد و View، ViewModel و سایر بخشها وظایف خود را به شکل روشن انجام دهند.
این آموزش به پیادهسازی Validation در کنار سایر بخشهای معماری MVVM میپردازد. یادگیری این موضوع برای برنامهنویسانی مفید است که میخواهند ورودیهای کاربران را به شکل منظمتری مدیریت کنند و منطق اعتبارسنجی را با طراحی کلی نرمافزار هماهنگ سازند. وقتی قواعد اعتبارسنجی بهدرستی سازماندهی شوند، نگهداری و توسعه فرمها سادهتر میشود و بررسی دادهها به بخش مشخصی از ساختار برنامه وابسته خواهد بود.
نقش Dependency Injection در برنامههای WPF مبتنی بر MVVM
Dependency Injection روشی برای مدیریت وابستگی میان اجزای نرمافزار است که بهجای ساخت مستقیم وابستگیها در داخل یک کلاس، فراهم کردن آنها را به سازوکاری جداگانه واگذار میکند. این رویکرد به کاهش وابستگی مستقیم میان اجزا کمک میکند و امکان جایگزینی پیادهسازیها را سادهتر میسازد. در برنامههای WPF مبتنی بر MVVM، مدیریت مناسب وابستگیها میتواند ساختار ViewModelها و سرویسهای مورد استفاده آنها را منظمتر کند.
در این دوره، Dependency Injection در کنار پیادهسازی MVVM و مدیریت ارتباط میان بخشهای برنامه مطرح میشود. این موضوع برای توسعهدهندگان پیشرفتهای مناسب است که با مفاهیم پایه WPF آشنا هستند و میخواهند معماری نرمافزار خود را بهتر سازماندهی کنند. درک نحوه مدیریت وابستگیها، بهویژه در برنامههایی با چندین ViewModel و سرویس، میتواند تغییر و نگهداری کد را آسانتر کند و به طراحی ساختاری توسعهپذیرتر منجر شود.
سرفصل مطالب آموزش ویدئویی معماری MVVM پیشرفته در WPF
فصل اول: مبانی الگوی MVVM- مقدمه
- بررسی Separation of Concerns
- بررسی Separation of Concerns در MVVM
- اهداف و مزیت های MVVM
- الگوهای دیگر انجام UI Separation
- بررسی MVVM در پلتفرم های دیگر
- مسئولیت های MVVM
- مسئولیت های Model
- مسئولیت های View
- مسئولیت های View Model
- مسئولیت های Client Service ih
- معادله ی MVVM
- چه چیزی اول ساخته شود؟
- جمع بندی
- مقدمه
- استفاده از Async در MVVM
- پیاده سازی یک View بدون MVVM یا Data Binding
- پیاده سازی یک MVVM یا Data Binding
- تبدیل برنامه به الگوی MVVM
- جمع بندی
- مقدمه
- بررسی View First Construction
- پیاده سازی View First Construction
- پیاده سازی View First Construction با View Model Locator
- بررسی Data Binding در MVVM
- بررسی View Model First Construction با Data Template ها
- بررسی Data Template های Explicit و Implicit
- پیاده سازی Data Template های Implicit در View Model First Construction
- هیچ کدام اول ساخته نشود
- جمع بندی
- مقدمه
- بررسی ارتباط بین View ها و View Model ها با Command ها
- پیاده سازی ارتباط بین View ها و View Model ها با Command ها
- بررسی Attached Property ها و Behavior ها
- پیاده سازی Attached Behavior های Custom
- استفاده از Behavior های Blend
- بررسی Property Change Notification
- استفاده از INotifyPropertyChanged
- استفاده از Blend Behavior های Custom و INotifyPropertyChanged Trigger
- جمع بندی
- مقدمه
- نامگذاری Component های MVVM
- مکان گذاری Component های MVVM
- بررسی Hierarchy و Navigation در MVVM
- بررسی Use Case ها
- پیاده سازی یک Hierarchy
- Encapsulate کردن INotifyPropertyChanged
- انجام Navigation بین View ها
- Load کردن داده ها در View Model
- پیاده سازی Navigation با پارامتر
- پیاده سازی AddEdit Navigation
- جمع بندی
- مقدمه
- بررسی Data Sources و Visual Studio Designer
- Scaffold کردن یک Edit View
- پیاده سازی یک Wrapper Class برای Model Object ها
- پیاده سازی Command Handling و بررسی Convention ها
- بررسی Validation در MVVM
- بررسی Dependency Injection در MVVM
- پیاده سازی Validation برای User Input ها
- پیاده سازی Dependency Injection با Unity برای Client Service ها
- پیاده سازی Searching و Filtering برای داده ها
- بررسی Toolkit های MVVM
- جمع بندی







