
آموزش ساخت کنترل های سفارشی Custom Control ها در دبلیو پی اف WPF
آموزش ساخت کنترل های سفارشی Custom Control ها در دبلیو پی اف WPF یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی مقدمه ای بر Custom Control ها در WPF است که با نام اصلی Introduction to WPF Custom Controls از شرکت Pluralsight منتشر شده است.
یک User Control چیست؟
یک User Control در WPF یک روش برای ترکیب کردن و در کنار هم قرار دادن کنترل های Built-in در WPF است.

در واقع، یک User Control یک پکیج از کنترل های مختلف است که در قالب یک فایل XAML قابل استفاده مجدد ساخته می شود. از User Control ها در سناریوهای زیر استفاده می شود.
- اگر قصد دارید یک کنترل را با کنار هم قرار دادن کنترل هایی که از قبل موجود هستند بسازید.
- اگر سفارشی سازی یا Customization زیادی مدنظر شما نیست. در واقع User Control ها از Theme ها و Control Template ها استفاده نمی کنند. علاوه بر این، اضافه کردن استایل به User Control ها بسیار دشوار است.
- اگر قصد دارید که کنترل شما از یک Code-behind و یک فایل XAML تشکیل شده باشد که بتوانید در Code-behind تعدادی Event Handler قرار بدهید.
- اگر قصد ندارید که از کنترل ساخته شده در برنامه های مختلف WPF استفاده کنید.
یک Custom Control چیست؟
یک Custom Control در واقع یک کلاس است که استایل و Template خاص خود را دارد که هر دو در یک فایل با نام generic.xaml ساخته می شود. در سناریوهای زیر بهتر است از یک Custom Control استفاده کنید.
- اگر کنترل مورد نظر شما از قبل در WPF وجود ندارد و قصد دارید از ابتدا آن را بسازید.
- اگر قصد دارید با اضافه کردن یک Functionality و یا یک Property اقدام به Extend کردن (گشترش دادن) یک کنترل از قبل موجود کنید.
- اگر قصد دارید که کنترل شما از Theme و استایل پشتیبانی کند.
- اگر قصد دارید از کنترل ساخته شده در برنامه های مختلف WPF استفاده کنید.
اضافه کردن Property به Custom Control در WPF
در WPF، Propertyها یکی از راههای اصلی تنظیم رفتار و ظاهر کنترلهای رابط کاربری هستند. هنگام ساخت Custom Control، تعریف ویژگیهای مناسب به مصرفکننده کنترل اجازه میدهد آن را از طریق XAML یا کد پیکربندی کند. این ویژگیها میتوانند مقادیری را در اختیار کنترل قرار دهند که برای نمایش یا اجرای رفتارهای آن لازم هستند. طراحی درست Propertyها باعث میشود کنترل سفارشی انعطافپذیرتر باشد و بتوان از آن در موقعیتهای مختلف رابط کاربری استفاده کرد.
در این دوره، اضافه کردن Property به Custom Control در کنار مباحث مربوط به ساخت کنترلهای سفارشی بررسی میشود. این موضوع برای توسعهدهندگانی مفید است که میخواهند کنترلهایی فراتر از ترکیب ساده اجزای آماده بسازند. با تعریف رابط مناسبی برای تنظیمات کنترل، میتوان وابستگی آن به مقادیر ثابت را کاهش داد و استفاده مجدد از آن را در بخشهای مختلف برنامه آسانتر کرد. این رویکرد در طراحی کنترلهای قابل توسعه اهمیت دارد.
مدیریت Event و Command در کنترلهای سفارشی WPF
Eventها و Commandها راههایی برای واکنش به تعامل کاربر و اجرای عملیات در برنامههای WPF هستند. Event معمولاً به وقوع یک رویداد مشخص اشاره دارد، در حالی که Command امکان تعریف عملیاتی را فراهم میکند که میتوان آن را به عناصر رابط کاربری متصل کرد. انتخاب شیوه مناسب به ساختار برنامه و الگوی طراحی مورد استفاده بستگی دارد. در بسیاری از برنامههای WPF، Commandها در کنار الگوی MVVM برای جدا نگه داشتن منطق برنامه از رابط کاربری کاربرد دارند.
در این آموزش، اضافه کردن Eventها و Commandها به Custom Control بررسی میشود. این قابلیت به توسعهدهنده کمک میکند کنترل سفارشی را از نظر تعاملپذیری کاملتر کند و امکان واکنش به اقدامات کاربر را در اختیار مصرفکننده کنترل قرار دهد. طراحی مناسب این بخش باعث میشود کنترل بتواند در موقعیتهای مختلف استفاده شود، بدون اینکه منطق آن به یک صفحه یا سناریوی خاص وابسته باشد. این موضوع در ساخت اجزای قابل استفاده مجدد اهمیت زیادی دارد.
Visual Behavior در WPF چیست؟
Visual Behavior به رفتارهای مرتبط با نحوه نمایش و واکنش بصری عناصر رابط کاربری اشاره دارد. در WPF، کنترلها میتوانند علاوه بر دادهها و رویدادها، رفتارهایی داشته باشند که بر ظاهر یا نحوه تعامل آنها اثر میگذارد. برای مثال، تغییر وضعیت یک کنترل در واکنش به تعامل کاربر میتواند از طریق سازوکارهای بصری مناسب مدیریت شود. درک این بخش به توسعهدهنده کمک میکند کنترلهایی بسازد که ظاهر و رفتار آنها با نیازهای رابط کاربری هماهنگ باشد.
در این دوره، اضافه کردن Visual Behavior به Custom Controlها بررسی میشود. این موضوع در کنار تعریف Property و مدیریت Event و Command، بخش مهمی از طراحی کنترلهای سفارشی را تشکیل میدهد. با در نظر گرفتن رفتار بصری از ابتدا، میتوان کنترلهایی ایجاد کرد که علاوه بر انجام وظیفه اصلی، واکنشهای رابط کاربری مشخص و قابل پیشبینی داشته باشند. این رویکرد برای توسعهدهندگانی مفید است که به دنبال ساخت اجزای تخصصی و قابل استفاده مجدد در WPF هستند.
طراحی Theme برای Custom Control در WPF
Theme در WPF به سازماندهی ظاهر کنترلها و تعیین سبک بصری آنها کمک میکند. هنگام ساخت یک Custom Control، توجه به Theme باعث میشود ظاهر کنترل از منطق عملکردی آن جدا باشد و تنظیمات بصری بتوانند به شکل ساختارمندتری مدیریت شوند. این جداسازی برای برنامههایی مفید است که از چندین کنترل سفارشی استفاده میکنند یا به هماهنگی ظاهری میان اجزای رابط کاربری نیاز دارند. طراحی مناسب Theme همچنین میتواند تغییر ظاهر کنترل را بدون تغییر منطق اصلی آن سادهتر کند.
در این آموزش، اضافه کردن Theme به Custom Control در کنار سایر قابلیتهای توسعه کنترل بررسی میشود. این مبحث برای برنامهنویسانی مناسب است که میخواهند کنترلهایی بسازند که از نظر ظاهر نیز قابلیت تنظیم داشته باشند. ترکیب Theme با Propertyها و رفتارهای بصری، امکان طراحی کنترلهای منسجمتر را فراهم میکند و به استفاده مجدد از آنها در صفحات مختلف برنامه کمک میکند. آشنایی با این مفاهیم برای توسعه رابطهای کاربری حرفهای با WPF ارزشمند است.
سرفصل مطالب آموزش ویدئویی ساخت Custom Control ها در WPF
فصل اول: مقدمه
- مقدمه
- آناتومی یک User Control
- چه موقع از User Control ها استفاده می کنیم؟
- آناتومی یک Custom Control
- چه موقع از یک Custom Control استفاده می کنیم؟
- استفاده از کنترل ها در XAML
- جمع بندی
فصل دوم: ساختن Custom Control ها
- مقدمه
- انتخاب یک Base Class مناسب
- ارث بری کردن از یک کنترل از قبل موجود
- معرفی Presenter ها
- بررسی عملی ContentPresenter
- بررسی عملی ItemsPresenter
- بررسی Data Binding
- بررسی TEmplateBinding و TemplatedParent
- دسترسی پیدا کردن به Element های Template
- دسترسی پیدا کردن به Element ها یک Control Template
- جمع بندی
فصل سوم: اضافه کردن Property
- مقدمه
- بررسی Dependency Property ها
- اضافه کردن یک Dependency Property
- بررسی Property Metadata
- اضافه کردن Property Metadata
- بررسی Property های Read-only
- بررسی Property های Collection ای
- اضافه کردن یک Collection Type Property
- بررسی Attached Property ها
- اضافه کردن یک Attached Property
- جمع بندی
فصل چهارم: اضافه کردن Event ها و Command ها
- مقدمه
- معرفی Routed Event ها
- اضافه کردن یک Routed Event
- بررسی Routed Event های سفارشی
- اضافه کردن یک Routed Event سفارشی
- اضافه کردن یک Routed Event Args سفارشی
- بررسی Routed Command ها
- اضافه کردن یک Routed Command
- بررسی Routed Command های سفارشی
- اضافه کردن Routed Command های سفارشی
- پیاده سازی اینترفیس ICommandSource
- جمع بندی
فصل پنجم: اضافه کردن Visual Behavior
- مقدمه
- بررسی Trigger ها
- اضافه کردن Trigger ها
- بررسی VisualStateManager
- استفاده از VisualStateManager
- مقایسه ی Trigger ها و VisualStateManager
- جمع بندی
فصل ششم: اضافه کردن Theme
- مقدمه
- بررسی Theming
- ساختن Theme ها
- بررسی Convention های نامگذاری Theme ها
- بررسی Assembly Attribute ها
- اضافه کردن قابلیت Theming
- استفاده از Assembly Attribute ها
- نکات مربوط به Theming
- اضافه کردن نکات مربوط به Theming
- جمع بندی







