SlideShare a Scribd company logo
1 of 21
MVVM IN
WPF (C#)
ARMAN BARKHORDAR
What is MVVM?
2
Model
3
•‫برنامه‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫کالس‬ ‫شامل‬
•‫ها‬ ‫داده‬ ‫کردن‬ ‫فراهم‬ ‫وظیفه‬
View Model
4
•‫شامل‬Object‫برای‬ ‫تابع‬ ‫و‬ ‫داده‬ ‫کردن‬ ‫فراهم‬ ‫برای‬View
•‫برای‬ ‫را‬ ‫ها‬ ‫داده‬ ‫ها‬ ‫کالس‬View‫کنند‬ ‫می‬ ‫ارسال‬
•‫اطالع‬ ‫عدم‬View Model‫از‬View‫خودش‬ ‫به‬ ‫مربوط‬
•UI‫از‬ ‫استفاده‬ ‫با‬Command‫شوند‬ ‫می‬ ‫کنترل‬ ‫ها‬
View
5
•‫عناصر‬ ‫تمام‬ ‫شامل‬UI
•‫در‬XAML‫شامل‬:Window, User control, Resource
dictionaries
‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫با‬ ‫همکاری‬
‫دوباره‬ ‫طراحی‬ ‫توانایی‬UI‫کمتر‬ ‫زحمت‬ ‫با‬
‫تر‬ ‫راحت‬ ‫پروژه‬ ‫نگهداری‬
‫پروژه‬ ‫تست‬ ‫در‬ ‫بیشتر‬ ‫راحتی‬
‫بزرگ‬ ‫های‬ ‫پروژه‬ ‫برای‬ ‫مناسب‬
Why Do We Use
MVVM?
6
Interaction In MVVM
7
• Notifications
• Data Binding
• Commands
Data Binding
8
•‫کلیدی‬ ‫اصل‬MVVM
•‫بین‬ ‫ارتباط‬ ‫برقراری‬View‫و‬View Model
•‫به‬ ‫انجام‬ ‫قابل‬4‫روش‬:
1-‫طرفه‬ ‫یک‬2-‫به‬ ‫طرفه‬ ‫یک‬Source3-‫طرفه‬ ‫دو‬4-‫بار‬ ‫یک‬
Data Binding: One - Way
9
•‫در‬XAML‫گیرد‬ ‫می‬ ‫قرار‬ ‫فرض‬ ‫پیش‬ ‫مد‬ ‫عنوان‬ ‫به‬
•‫از‬ ‫انتقال‬View Model‫به‬View
Data Binding: One – Way – To Source
10
•‫از‬ ‫ها‬ ‫داده‬ ‫انتقال‬View‫به‬View Model
•‫کاربر‬ ‫از‬ ‫اطالعات‬ ‫دریافت‬ ‫برای‬ ‫مناسب‬
Data Binding: Two – Way
11
•‫بین‬ ‫هماهنگی‬View‫و‬View Model(‫دارد‬ ‫بستگی‬ ‫مدل‬ ‫هردو‬ ‫به‬)
•‫روش‬ ‫ترین‬ ‫معروف‬Binding
Data Binding: One – Time
12
•‫از‬ ‫ها‬ ‫داده‬ ‫انتقال‬View Model‫به‬View
•‫بین‬ ‫هماهنگی‬ ‫عدم‬View Model‫و‬View
•‫که‬ ‫که‬ ‫زمانی‬ ‫تنها‬ ‫داده‬ ‫انتقال‬Binding‫میشود‬ ‫تنظیم‬
Notifications (INPC)
13
•‫به‬ ‫دادن‬ ‫اطالع‬UI‫تغییر‬ ‫زمان‬ ‫در‬ ‫کردن‬ ‫روزرسانی‬ ‫به‬ ‫برای‬Properties‫های‬
‫به‬ ‫مربوط‬View Model
•NotifypPopertyChanged (INPC)
INPC - Example
14
INPC - Example
15
INPC - Example
16
1.public event PropertyChangedEventHandler PropertyChanged;
2. public void RaisePropertyChange(string propertyname)
3. {
4. if (PropertyChanged != null)
5. {
6. PropertyChanged(this, new PropertyChangedEventArs(propertyname));
7. }
8. }
Commands - ICommand
17
•‫ها‬ ‫کامند‬ ‫از‬ ‫استفاده‬ ‫با‬View Model‫به‬ ‫تواند‬ ‫می‬View‫بدهد‬ ‫پاسخ‬
•‫داخل‬ ‫های‬ ‫متود‬ ‫شدن‬ ‫فراخوانده‬ICommand‫با‬Event‫داخل‬ ‫های‬VIew
Commands - ICommand
18
•‫متود‬Execute‫که‬ ‫شود‬ ‫می‬ ‫اجرا‬ ‫زمانی‬ ‫تنها‬True, CanExecute‫باشد‬
•‫که‬ ‫صورتی‬ ‫در‬False, CanExcute،‫باشد‬Binding‫فعال‬ ‫غیر‬ ‫خودکار‬ ‫طور‬ ‫به‬
‫شود‬ ‫می‬
1.bool CanExecute(object parameter);
2.void Execute(object parameter);
3.event EventHandler CanExecuteChanged;
Commands - ICommand
19
1.public event EventHandler CanExecuteChanged
2.{
3. add { CommandManager.RequerySuggested += value; }
4. remove { CommandManager.RequerySuggested -= value; }
5.}
•‫مقدار‬ ‫است‬ ‫ممکن‬ ‫که‬ ‫اتفاقی‬ ‫با‬ ‫شدن‬ ‫فعال‬CanExecute‫دهد‬ ‫تغییر‬ ‫را‬
,MVVM‫بزرگ‬ ‫های‬ ‫پروژه‬ ‫برای‬ ‫مفید‬
‫از‬ ‫موقع‬ ‫به‬ ‫استفاده‬MVVM
‫کوچک‬ ‫های‬ ‫پروژه‬ ‫در‬ ‫استفاده‬ ‫عدم‬
Conclusion
20
c-sharpcorner.com
mvvmcross.com
Microsoft.com
Sources
21

More Related Content

Similar to Mvvm in wpf

آموزش ASP.NET MVC فصل اول : مقدمات
آموزش ASP.NET MVC فصل اول : مقدماتآموزش ASP.NET MVC فصل اول : مقدمات
آموزش ASP.NET MVC فصل اول : مقدماتMorteza Dalil
 
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis
قلاب سازی در تحلیل بدافزارهاHooking in Malware AnalysisM Mehdi Ahmadian
 
توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجر...
توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجر...توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجر...
توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجر...Web Standards School
 
Web Application Security Test
Web Application Security TestWeb Application Security Test
Web Application Security TestSaeid Sadeghi
 
Microservices.pdf
Microservices.pdfMicroservices.pdf
Microservices.pdfhbsd1374
 
13940305-NetManagementOS_ver1.5
13940305-NetManagementOS_ver1.513940305-NetManagementOS_ver1.5
13940305-NetManagementOS_ver1.5Ehsan Khanahmadi
 
Vue.js طراحی رابط کاربری وب با استفاده از
Vue.js طراحی رابط کاربری وب با استفاده ازVue.js طراحی رابط کاربری وب با استفاده از
Vue.js طراحی رابط کاربری وب با استفاده ازShiraz LUG
 
Repository pattern
Repository patternRepository pattern
Repository patternMahdi Fa
 
Oracle database firewall
Oracle database firewallOracle database firewall
Oracle database firewallAskar Adibi
 
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهHamid Torkashvand
 
Cloud Computing and Cloud Services
Cloud Computing and Cloud ServicesCloud Computing and Cloud Services
Cloud Computing and Cloud ServicesSaeid Bostandoust
 

Similar to Mvvm in wpf (20)

آموزش ASP.NET MVC فصل اول : مقدمات
آموزش ASP.NET MVC فصل اول : مقدماتآموزش ASP.NET MVC فصل اول : مقدمات
آموزش ASP.NET MVC فصل اول : مقدمات
 
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 
پیش مقدمه آموزش نرم افزار متلب
پیش مقدمه آموزش نرم افزار متلبپیش مقدمه آموزش نرم افزار متلب
پیش مقدمه آموزش نرم افزار متلب
 
Oracle ADF Presentation
Oracle ADF PresentationOracle ADF Presentation
Oracle ADF Presentation
 
IranOUG_Oracle_Multitenant
IranOUG_Oracle_MultitenantIranOUG_Oracle_Multitenant
IranOUG_Oracle_Multitenant
 
توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجر...
توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجر...توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجر...
توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجر...
 
Web Application Security Test
Web Application Security TestWeb Application Security Test
Web Application Security Test
 
Microservices.pdf
Microservices.pdfMicroservices.pdf
Microservices.pdf
 
shabake-sdn.pptx
shabake-sdn.pptxshabake-sdn.pptx
shabake-sdn.pptx
 
13940305-NetManagementOS_ver1.5
13940305-NetManagementOS_ver1.513940305-NetManagementOS_ver1.5
13940305-NetManagementOS_ver1.5
 
BI with Qlikview
BI with QlikviewBI with Qlikview
BI with Qlikview
 
Vue.js طراحی رابط کاربری وب با استفاده از
Vue.js طراحی رابط کاربری وب با استفاده ازVue.js طراحی رابط کاربری وب با استفاده از
Vue.js طراحی رابط کاربری وب با استفاده از
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
How Create Waf With Naxsi
How Create Waf With NaxsiHow Create Waf With Naxsi
How Create Waf With Naxsi
 
Proxmox
ProxmoxProxmox
Proxmox
 
software defined network
software defined networksoftware defined network
software defined network
 
Introduction to SOA
Introduction to SOAIntroduction to SOA
Introduction to SOA
 
Oracle database firewall
Oracle database firewallOracle database firewall
Oracle database firewall
 
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه داده
 
Cloud Computing and Cloud Services
Cloud Computing and Cloud ServicesCloud Computing and Cloud Services
Cloud Computing and Cloud Services
 

Mvvm in wpf

  • 3. Model 3 •‫برنامه‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫کالس‬ ‫شامل‬ •‫ها‬ ‫داده‬ ‫کردن‬ ‫فراهم‬ ‫وظیفه‬
  • 4. View Model 4 •‫شامل‬Object‫برای‬ ‫تابع‬ ‫و‬ ‫داده‬ ‫کردن‬ ‫فراهم‬ ‫برای‬View •‫برای‬ ‫را‬ ‫ها‬ ‫داده‬ ‫ها‬ ‫کالس‬View‫کنند‬ ‫می‬ ‫ارسال‬ •‫اطالع‬ ‫عدم‬View Model‫از‬View‫خودش‬ ‫به‬ ‫مربوط‬ •UI‫از‬ ‫استفاده‬ ‫با‬Command‫شوند‬ ‫می‬ ‫کنترل‬ ‫ها‬
  • 6. ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫با‬ ‫همکاری‬ ‫دوباره‬ ‫طراحی‬ ‫توانایی‬UI‫کمتر‬ ‫زحمت‬ ‫با‬ ‫تر‬ ‫راحت‬ ‫پروژه‬ ‫نگهداری‬ ‫پروژه‬ ‫تست‬ ‫در‬ ‫بیشتر‬ ‫راحتی‬ ‫بزرگ‬ ‫های‬ ‫پروژه‬ ‫برای‬ ‫مناسب‬ Why Do We Use MVVM? 6
  • 7. Interaction In MVVM 7 • Notifications • Data Binding • Commands
  • 8. Data Binding 8 •‫کلیدی‬ ‫اصل‬MVVM •‫بین‬ ‫ارتباط‬ ‫برقراری‬View‫و‬View Model •‫به‬ ‫انجام‬ ‫قابل‬4‫روش‬: 1-‫طرفه‬ ‫یک‬2-‫به‬ ‫طرفه‬ ‫یک‬Source3-‫طرفه‬ ‫دو‬4-‫بار‬ ‫یک‬
  • 9. Data Binding: One - Way 9 •‫در‬XAML‫گیرد‬ ‫می‬ ‫قرار‬ ‫فرض‬ ‫پیش‬ ‫مد‬ ‫عنوان‬ ‫به‬ •‫از‬ ‫انتقال‬View Model‫به‬View
  • 10. Data Binding: One – Way – To Source 10 •‫از‬ ‫ها‬ ‫داده‬ ‫انتقال‬View‫به‬View Model •‫کاربر‬ ‫از‬ ‫اطالعات‬ ‫دریافت‬ ‫برای‬ ‫مناسب‬
  • 11. Data Binding: Two – Way 11 •‫بین‬ ‫هماهنگی‬View‫و‬View Model(‫دارد‬ ‫بستگی‬ ‫مدل‬ ‫هردو‬ ‫به‬) •‫روش‬ ‫ترین‬ ‫معروف‬Binding
  • 12. Data Binding: One – Time 12 •‫از‬ ‫ها‬ ‫داده‬ ‫انتقال‬View Model‫به‬View •‫بین‬ ‫هماهنگی‬ ‫عدم‬View Model‫و‬View •‫که‬ ‫که‬ ‫زمانی‬ ‫تنها‬ ‫داده‬ ‫انتقال‬Binding‫میشود‬ ‫تنظیم‬
  • 13. Notifications (INPC) 13 •‫به‬ ‫دادن‬ ‫اطالع‬UI‫تغییر‬ ‫زمان‬ ‫در‬ ‫کردن‬ ‫روزرسانی‬ ‫به‬ ‫برای‬Properties‫های‬ ‫به‬ ‫مربوط‬View Model •NotifypPopertyChanged (INPC)
  • 16. INPC - Example 16 1.public event PropertyChangedEventHandler PropertyChanged; 2. public void RaisePropertyChange(string propertyname) 3. { 4. if (PropertyChanged != null) 5. { 6. PropertyChanged(this, new PropertyChangedEventArs(propertyname)); 7. } 8. }
  • 17. Commands - ICommand 17 •‫ها‬ ‫کامند‬ ‫از‬ ‫استفاده‬ ‫با‬View Model‫به‬ ‫تواند‬ ‫می‬View‫بدهد‬ ‫پاسخ‬ •‫داخل‬ ‫های‬ ‫متود‬ ‫شدن‬ ‫فراخوانده‬ICommand‫با‬Event‫داخل‬ ‫های‬VIew
  • 18. Commands - ICommand 18 •‫متود‬Execute‫که‬ ‫شود‬ ‫می‬ ‫اجرا‬ ‫زمانی‬ ‫تنها‬True, CanExecute‫باشد‬ •‫که‬ ‫صورتی‬ ‫در‬False, CanExcute،‫باشد‬Binding‫فعال‬ ‫غیر‬ ‫خودکار‬ ‫طور‬ ‫به‬ ‫شود‬ ‫می‬ 1.bool CanExecute(object parameter); 2.void Execute(object parameter); 3.event EventHandler CanExecuteChanged;
  • 19. Commands - ICommand 19 1.public event EventHandler CanExecuteChanged 2.{ 3. add { CommandManager.RequerySuggested += value; } 4. remove { CommandManager.RequerySuggested -= value; } 5.} •‫مقدار‬ ‫است‬ ‫ممکن‬ ‫که‬ ‫اتفاقی‬ ‫با‬ ‫شدن‬ ‫فعال‬CanExecute‫دهد‬ ‫تغییر‬ ‫را‬
  • 20. ,MVVM‫بزرگ‬ ‫های‬ ‫پروژه‬ ‫برای‬ ‫مفید‬ ‫از‬ ‫موقع‬ ‫به‬ ‫استفاده‬MVVM ‫کوچک‬ ‫های‬ ‫پروژه‬ ‫در‬ ‫استفاده‬ ‫عدم‬ Conclusion 20