‫DataBinding در WPF

به عنوان یک برنامه‌نویس ASP.NET عادت داشتم هر جا که اطلاعات تغییر می‌کند. متود DataBind()‎ را از کنترل‌هایی مثل GridView فراخوانی کنم. در WPF هم می‌خواستم همان کارها را بکنم اما به کمی مشکل برخوردم. در WPF باید کارهای زیر انجام شود:

۱- یکی از کنترل‌های گرید در WPF که امکانات Binding خوبی دارد کنترل DataGrid است. من هم از همین کنترل شروع می‌کنم.

۲- مقدار AutoGenerateColumns را مشابه ASP.NET برابر True قرار می‌دهم.

۳- اطلاعاتی که می‌خواهم با آنها کار کنم را به ItemSource (به جای DataSource) معرفی می‌کنم.

۴- متودی به اسم DataBind وجود ندارد. برای Refresh شدن اطلاعات باید دقت کنیم که مدل Data Binding در WPF چیزی به اسم Observer pattern است. در این الگو خود data به کنترل DataGrid می‌گویند که چه وقتی اطلاعات آنها تغییر کرده و باید اطلاعات Refresh شوند.

۵- برای پیاده‌سازی عملیات Refresh باید اطلاعاتی که قرار است به کنترل‌هایی داده‌ای Bind شوند، اینترفیس INotifyCollectionChanged را پیاده‌سازی کرده باشند. به این ترتیب این وظیفه خود منبع اطلاعاتی است که به استفاده کنندگانش اعلام کند که اطلاعات تغییر یافته.

۶- برای راحتی کار می‌توان از Collectionهای ویژه‌ای مثل BindingList استفاده کرد.

۷- نمی‌دانم این روش Data Binding در WPF خوب است یا بد. اما ظاهراً حق انتخاب دیگری وجود ندارد.