چگونه خطاهای زمان طراحی را در فایل WPF XAML اشکال زدایی(Debug) کنیم؟

پنجشنبه 28 آبان 1394

از آنجاییکه کد XAML به ما اجازه نمی دهد break point را وارد کرده و خطاهای پیش رو را اشکال زدایی کنیم، به همین خاطر در این مقاله یک ترفند کوچک برای به دام انداختن خطاها در فایل های XAML ارائه کرده ایم.

چگونه خطاهای زمان طراحی را در فایل WPF XAML اشکال زدایی(Debug) کنیم؟

طراحی View در توسعه برنامه های WPF نقش مهمی را  نه تنها در قرار دادن control ها ایفا می کند، بلکه همچنین می توانیم View را در زمان اجرا  ببینیم.

زمانی که ما تعدادی خطا در زمان طراحی می بینیم، و نمی توانیم break point در فایل XAML برای تشخیص خطا قرار دهیم، رفع خطا در این حالت خسته کننده می شود. علاوه بر این به خاطر این خطاها گاهی اوقات طراح برای ارائه کنترل های دیگر با شکست مواجه می شود.  این مقاله ما را قادر می سازد تا design view از فایل XAML را در WPF اشکال زدایی کنیم.

پیش زمینه

آشنایی با اساس WPF شرط لازم و ضروری برای درک این مقاله می باشد و از همه مهمتر باید بدانید که چگونه data context را در زمان طراحی تنظیم کنید. برای آشنایی بهتر می توانید به این مقاله نیز رجوع کنید.

مسئله

در طراحی برنامه های WPF، ما به طور مکرر انواع خطاهای زیر را در design view خود می بینیم. که در تصویر زیر نشان داده شده است:

 

 (رفرنس ها در حال حاضر در اینترنت وجود دارد اما هنوز توسعه دهندگان به استفاده از آن عادت نکرده اند).

 

مراحل اشکال زدایی خطاهای زمان طراحی

1. اول از همه، تمام اسناد باز شده XAML را در  Visual Studio ببندید.

2. یک نمونه جدید از اپلیکیشن مشابه در Visual Studio را باز کنید( نام آن را app2 قرار دهید).

3. دوباره، تمام فایل های XAML باز شده را ببندید. ( برای اینکه در حالت مطمئن و امن باشید، شما ممکن است تمام اسناد در app2 را ببندید).

4. حالا Task Manager را باز کنید این کار فقط به منظور بررسی اینکه XDesProc.exe نباید در حال اجرا باشد، انجام می شود. ( در واقع XDesProc.exe مسئول اشکال زدایی فایل های XAML است، بنابراین اگر هر نوع سند XAML باز باشد، آنگاه به طور خودکار راه اندازی می شود.) بنابراین اگر دیدید که  XDesProc.exe در حال اجرا است ( در تب Processes)، فقط آن ببندید یا به اصطلاح آن را بکشید wink ( بر روی process راست کلیک کرده و گزینه End Process Tree را بزنید).

5. حالا به app1 سوئیچ کنید( نمونه اصلی از Visual Studio که می خواهید break point را در آن قرار دهید). در اینجا فایل شامل  design data  مربوط به view model را باز کرده (MainWindowViewModelDesignData.cs) و یک break point در خط اول سازنده آن قرار دهید.

6. به app2 مجدد رجوع کنید و View را باز کنید ( یعنی، MainWindow.xaml که خطای زمان طراحی در آن در حال ایجاد است). این کار XDesProc.exe را در Task Manager راه اندازی خواهد کرد.

7. مجدد به app1 سوئیچ کرده و به  Debug -> Attach to Processes رفته context menu item در را از منو انتخاب کنید Visual Studio.

XDesProc.exe.8 را جستجو کرده و روی دکمه attach کلیک کنید.

9. به app2 سوئیچ کرده و سند XAML را بسته و دوبار باز کنید(MainWindow.xaml). یکبار این مراحل را انجام دهید، حالا break point را می توانید استفاده کنید.

 

10. در اینجا شما خصوصیت PersonList نمونه سازی شده ندارید که باعث رخداد استثنای NullReference در WPF Designer می شود. بعد از اصلاح آن خواهید دید که هم اکنون designer داده ها را به خوبی نمایش می دهد.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • WPF
  • 2k بازدید
  • 2 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید