PDA

View Full Version : سوال: فرق Dependency property با Clr property چیه؟



Programmer 1
چهارشنبه 14 فروردین 1392, 23:35 عصر
سلام،

دوستان بعد از کلی مطالعه پراکنده و جستجو در اینترنت و بررسی چند تا مقاله در مورد مبحث Dependency property سر در نیاوردم؟ دقیقا فرقش با پراپرتی های معمولی دات نت چیه؟ این پراپرتی جدید در wpf چه چیز جدید ارائه کرده است که پراپرتی های معمولی از انجام آن عاجز هستند؟ چند جا نوشته بود Dependency property ها کاربردهای انیمیشن و ارث بری و ... رو دارند ولی اصلا سر در نمی آرم؟ مثلا برای متحرک کردن یک آبجکت چرا باید از پراپرتی استفاده کنیم؟ خب باید از متدی برای این کار استفاده بشه؟ هیچ مثال ساده ای در این زمینه پیدا نکردم. لطفا اگه کسی این مطلب رو خوب گرفته با یک مثال ساده دقیقا نشون بده که پراپرتی های وابسته wpf چه تفاوتی با پراپرتی های معمولی دارند و چه کمبودی رو برطرف کرده اند؟ و یا چه کاری رو ساده کرده اند؟ فقط با ذکر مثال. واقعا این مبحث بد توضیح داده شده هر جایی که خوندوم.

رافعی مهدی
پنج شنبه 15 فروردین 1392, 16:12 عصر
سلام دوست عزیز
اگه کتابهای مرجع و مناسب رو بخونید، میبینید که مبحث رو فوق العاده ساده و با جزئیاتش توضیح دادند.

چرا به این پراپرتیها، Dependency (وابستگی) گفته میشود؟ این اولین سوالی هست که باید جوابش رو به خوبی درک کرد. به خاطر اینکه یک DP، برای تعیین کردن مقدارش به طور همزمان به چندین منبع وابسته است. یکی از این منابع میتونه یک Animation باشه که داره به طور پیوسته مقدار این پراپرتی رو تغییر میده یا مثلاً مقدار یکی از پراپرتیهای المان والد (Parent Element) باشه که داره بین المانهای فرزندش منتشر (Propagate) میشه. اما مفصلترین مبحث مرتبط با DP، بزرگترین قابلیت اون هست: مکانیزم داخلی آگاه کننده تغییرات. (built-in ability to provide change notification)...

توضیح دادن تمام جوانب این مبحث، حتی به طور خلاصه هم وقت زیادی میگیره. مثلاً اینکه فرآیند تعیین مقدار یک DP شامل پنج مرحله اصلی میشه:
1- تعیین مقدار مبنا
2- ارزیابی عبارت مبین مقدار
3- اعمال Animation
4- تغییر به زور و اجباری مقدار
5- اعتبار سنجی مقدار

هر کدوم از این مراحل نیاز به توضیحات مفصلی دارند که من در اینجا فقط به طور خلاصه مرحله اول رو توضیح میدهم:
در تعیین مقدار مبنای یک DP، باید دونست که مهیا کنندگان (Provider) مختلفی دخالت دارند که به ترتیب اولویت عبارتند از:
1- مقدار محلی (Local Value) ... (دیگه لابد نیازی به ترجمه نیست)
2- Parent Template Trigger
3- Parent Template
4- Style Triggers
5- Template Triggers
6- Style Setters
7- Theme Style Triggers
8- Theme Style Setters
9- Property Value Inheritance
10- Default Value


این اطلاعات که حقیقتاً حتی تکرارش برای خودم هم جذابه رو از کتاب WPF 4 - Unleashed، نوشته Adam Nathan (فصل سوم، صفحات 80 تا 89) در اینجا آوردم. در این بین یک مثال هم از بکارگیری DPها ارائه شده. پیشنهاد میکنم حتماً این کتاب رو از روی حوصله مطالعه کنید. WPF آنقدر با WinForm متفاوته که حرف نامربوطی نیست اگر بگم تفاوتش به اندازه تغییر دادن سطح برنامه نویسی از محیط Console به WinForm هست.

موفق باشید