بررسی Dependency Property ها در WPF – آموزش WPF

  • یکشنبه 18 اکتبر 2020
  • بازدید ۳۶ نفر

wpf dependency properties 9259 تصویر

بررسی Dependency Property ها در WPF

در برنامه های WPF، Dependency Property به نوع خاصی از پراپرتی گرفته می شود که توسعه یافته CLR Property است. در این بخش به بررسی این نوع از پراپرتی های می پردازیم.

توضیحات Dependency Property ها

کلاسی که بخواهد در داخل خود Dependency Property تعریف کند باید از کلاس DependencyObject ارث بری کند. اکثر کلاس های تعریف شده در WPF که مربوط به UI هستند، از این کلاس ارث بری کرده اند و به طور پیشفرض از این نوع خاصیت ها پشتیبانی می کنند. به طور مثال خاصیت IsMouseOver یک Dependency Property است که در اکثر کنترل ها وجود دارد. برای درک بهتر به مثال زیر توجه کنید. در این مثال یک دکمه ساده با استفاده از کدهای XAML ایجاد میکنیم.

در قسمت TargetType مربوط به استایل دکمه نوشته شده است x:Type، این  یک Markup Extension  است که عملکرد مشابه typeof در سی شارپ را دارد و زمانی از آن استفاده می کنیم که بخواهیم نوع کنترل را مشخص کنیم.

زمانی که کد بالا کامپایل و اجرا شود، پنجره مانند شکل زیر ایجاد می شود که یک دکمه در وسط آن قرار دارد. زمانی که اشاره گر ماوس خود بر روی دکمه قرار گیرد، رنگ متن آن به قرمز تغییر می کند و زمانی که ماوس از روی دکمه برود، رنگ قبلی تنظیم می شود.

wpf dependency properties 9259 1 تصویر

کاربرد Dependency Property ها

استفاده از این نوع خاصیت ها، قابلیت های زیادی را در هنگام ساخت برنامه در اختیار ما قرار میدهد. برای مثال:

  • زمان تنظیم استایل برای یک کنترل
  • زمان بایند کردن داده ها
  • زمان تنظیم منابع به صورت static یا dynamic
  • زمانی که بخواهیم از animation پشتیبانی کنیم

به طور کلی Dependency Property ها قابلیت هایی را در اختیار شما قرار میدهند که نمی توان آن ها را با استفاده از خاصیت های CLR بدست آورد.

Dependency Property سفارشی

شما به راحتی می توانید Dependency Property های سفارشی خودتان را برای کنترلهای مختلف ایجاد کنید. برای مثال کد زیر مربوط به یک UserControl است، یک خاصیت به نام Text و از نوع Dependency Property را به کنترل SampleControl اضافه می کند.

کد XAML مربوط به کنترل SampleControl:

حال می توانیم مانند نمونه زیر از این کنترل و خاصیت سفارشی که خودمان اضافه کردیم، مانند نمونه زیر استفاده کنیم.

خروجی:

wpf dependency properties 9259 2 تصویر

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است