تمام سوالات سوالات بدون پاسخ سوال بپرسید
1

من مدت هاست که به زبان C# برنامه نویسی می کنم اما با WPF و (namespace)فضای نام System.Windows.Controls و Xaml تازه آشنا شده‌ام. هرچه بیشتر در این باره یاد می گیرم متوجه می شوم که کار های بیشتری را در زمینه مدیریت رخداد ها (event handling) و GUI initialization می توانیم انجام دهیم(هم درون کد و هم درون XAML).
سوال من از کسانی است که آشنایی بیشتری با WPF دارند و همچنین آنهایی که برنامه هایی با WPF نوشته اند. کجا می توان بهترین نقطه را برای جدا سازی کد و Xaml پیدا کرد؟ آیا شما از Xaml هر کجا که بتوانید اسنفاده می نمایید؟
هرگونه نکته ای در این زمینه می تواند برای من و بسیاری از برنامه نویس هایی که بنحوی با برنامه نویسی WPF کار می کنند و بدلیل وجود انتخاب های متعدد پیش رویشان نمی توانند تصمیم درستی بگیرند، می تواند بسیار مفید باشد.

منبع: stackoverflow

3 پاسخ

همانطور که پیشنهاد شد، الگوی Model-View-ViewModel را امتحان کنید. اگر کد شما مربوط به view می باشد آن را در Xaml یا code-behind برنامه قرار دهید( هرکدام که برای شما آسان تر است). اگر موارد، بیشتر مربوط به منطق برنامه (business logic) و تعامل کاربر و سیستم باشد بهتر است آن را در ViewModel قرار دهیم. در صورتی هم که تنها مربوط به منطق برنامه باشد و ارتباطی به تعامل کاربر و سیستم نداشته باشد آن را در Model برنامه تعریف می کنیم.
در زیر برای هرکدام مثالی آورده شده است:
Model:تعریف ویژگی ای بنام ModifiedDate برای ذخیره آخرین زمان بروز رسانی.
ViewModel: تغییر ویژگی ModifiedDate به یک ویژگی شمارشی بنام ModifiedAge. برمبنای زمانی که تغییر انجام گرفته است: دیروز، هفته پیش، ماه گذشته و
View: تغییر ویژگی ModifiedDate به ویژگی مربوط به رنگ پیش زمینه که در آن داده هایی که تازه تر مورد دستکاری و تغییر قرار گرفته اند با رنگ زرد روشن مشخص شوند.و وداده‌هایی که کمتر مورد دسترسی قرار گرفته‌اند با رنگ خاکستری مشخص شوند.

این نکته را می خواهم اضافه کنم ValueConverters را بخشی از View در نظر گرفتم.

(30 اوت '11, 05:20) hamedkh ♦

مثال بسیار خوبی در رابطه با محل دقیق هر کدام بود. همچنین پیشنهاد می کنم خیلی از نوشتن code-behin دوری نکنید....هدف اجتناب و دوری از code-behind نیست...بلکه هدف اینست که هر چه را در جای خودش قرار دهید.

(30 اوت '11, 05:20) hamedkh ♦

باید مراقب باشی. اگر کاری که می‌خواهی در View انجام بدی به سختی با XAML انجام میشه، بدون معطلی برو سراغ CodeBehind. باز هم تاکید می‌کنم که باید مراقب باشی منطق رنامه رو وارد View نکنی. (اگه CodeBehind از زبانی با توانایی کمتر مثل جاوا اسکریپت پشتیبانی می‌کرد خیلی خوب میشد)

(23 دسامبر '11, 10:31) _Ant Eater_

کدهای XAML به تنهایی پاسخ گو نیستند و شما هرکجا که با کمبود مواجه شدید، می‌تونید به سراغ کدهای C# برید. اگر قصد دارید از الگوی MVVM تبعیت کنید، جای XAML در View‌ است. بنابراین شما هرکجا که متوجه شدید XAML کمبود داره، همانجا نقطه جدایی از XAML ‌است. (توجه مهم اگر از الگوی MVVM تبعیت می‌کنید: استفاده از CodeBehind در کنار XAML‌ بطوریکه الگوی MVVM رو نقض نکنه، به تجربه و دقت نیاز داره)

ممنون از پاسختون.آیا قرار دادن codebehind در برنامه باعث نقض مدل MVVM نیست؟ساختار برنامه دچار مشکل نمی شود؟

(12 دسامبر '11, 07:48) hamedkh ♦

آنچه که من به آن می پردازم، الگول M-V-VMاست. الگویی بسیار عالی است که همه چیز را در بخش های جداگانه ای، جدا سازی می کند....همچنین Xaml شما را.
برای مثال این الگو به شما کمک می کند که مرزی را بین برنامه نویس و طراح ایجاد نمایید و حتی اجازه توسعه برنامه را بروش test driven development فراهم می آورد.
مطالب متعددی در این رابطه وجود دارد، اما من با پست های بلاگ John Gossman شروع می کنم:
http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx
http://blogs.msdn.com/johngossman/archive/2005/10/09/478894.aspx
http://blogs.msdn.com/johngossman/archive/2006/02/26/539598.aspx
http://blogs.msdn.com/johngossman/archive/2006/02/27/540304.aspx
http://blogs.msdn.com/johngossman/archive/2006/03/04/543695.aspx
http://blogs.msdn.com/johngossman/archive/2006/04/13/576163.aspx
بروز رسانی : در رابطه با الگوی M-V-VM مطالب بیشتری را در پست زیر می توانید بیابید:
http://stackoverflow.com/questions/275098/what-applications-could-i-study-to-understand-datamodel-view-viewmodel
یک نکته اینجاست که event handler ها را در Xaml تعریف نکنید. بجای آن المان های (elements) برنامه را در Xaml نامگذاری کرده و کد های مربوط به رخداد های آنرا در code-behind برنامه به این المان ها نسبت دهیم.

toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×209
  • ×137
  • ×61
  • ×54
  • ×40
  • پرسیده شده: 30 اوت '11, 05:16
  • بازدید: 3,320 بار
  • آخرین بروزرسانی: 23 دسامبر '11, 10:31

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها