Отстраняване на грешки при зареждане на WPF и Silverlight Designer, Разни,

WPF дизайнерът за Visual Studio включва богат и разширим визуален дизайнер за генериране на XAML код. Ако XAML файлът не се зареди в дизайнера, има няколко опции за отстраняване на неизправности. Този раздел предоставя някои съвети и описва начини за отстраняване на грешки при зареждане на носител. WPF конструктор. Примерите в този раздел се фокусират върху WPF, но повечето от въпросите, триковете и решенията се отнасят както за WPF, така и за Silverlight.

Забележка

Много от техниките, описани в този раздел, се отнасят и за инструмента Expression Blend.

Използвайте дебъгера на Visual Studio, за да преминете към вашия код по време на проектиране. Можете да използвате второ копие на Visual Studio за отстраняване на грешки при зареждане. Как да: Отстранявате грешки при зареждане на дизайнер. data-gu >За повече информация вижте Как да. Грешка при зареждане на конструктора за отстраняване на грешки.

Следните стъпки ще помогнат за разрешаването на грешки при зареждане на носител. WPF конструктор.

Прочетете всички получени съобщения за изключения.

Това може да изглежда очевидно, но ако получите изключение, трябва внимателно да прочетете съобщението. В някои случаи това помага бързо да се открие причината за проблема. Отстраняване на грешки и интерпретиране на грешки в WPF дизайнера. data-gu >За повече информация вижте Отстраняване на грешки и интерпретиране на грешки в WPF дизайнера.

Определете дали проблемът е специфичен за внедряването.

Създайте и стартирайте приложението, за да определите дали проблемът е само резултат от внедряване или взаимодействие със среди. WPF конструктор. Ако приложението се изгради и стартира, грешката по време на проектиране най-вероятно е причинена отизпълнение.

Определете дали грешката при изтегляне е проблемът.

Ако конструкторът не успее да се зареди поради изключение, проблемът най-вероятно е грешка при зареждане. Ако имате персонализиран код, който се зарежда по време на проектиране и възникват изключения или грешки при зареждане по време на разработката, вижте Код за време на проектиране по-долу.

Прегледайте кода, който се зарежда по време на разработката.

Има два подхода за писане на код, който също се изпълнява по време на разработката. Първият подход е да напишете защитен код чрез проверка на входните параметри за класове. Метод GetIsInDesignMode. data-gu >Вторият подход е да проверите дали режимът на проектиране е активен чрез извикване на метода GetIsInDesignMode. За повече информация вижте Код за време за проектиране по-долу.

Прегледайте други области на кода.

Няколко съвета за програмиране при работа със среди. За WPF Designer вижте раздела Съвети за програмиране по-долу. За методи за писане на най-надеждния код вижте раздела за най-добри практики за програмиране по-долу.

Форум на WPF Designer в MSDN за връзка с други разработчици, които използват WPF Designer. data-gu >Ако проблемите продължават, можете да отидете на форума за разработчици на WPF в MSDN (на английски), за да се свържете с други разработчици, използващи рамките. WPF конструктор. Сайт за отзиви за Visual Studio и .NET Framework. data-gu >Използвайте уеб сайта на Visual Studio и .NET Framework, за да докладвате възможни проблеми и възможни предложения. Обратна връзка (на английски).

Уверете се, че кодът се изпълнява както по време на проектиране, така и по време на изпълнение. приложение. Current е вашето приложение. данни-гу>Ако кодът се изпълнява по време на проектиране, не приемайте, че Application . Current е приложение за разработка. Текущият е Expression Blend. data-gu >Например, когато използвате инструмента Expression Blend, Current е Expression Blend. MainWindow не е главният прозорец на вашето приложение." data-gu >По време на проектиране MainWindow не е главният прозорец на приложението, което разработвате. Често срещаните операции, които причиняват неуспех на персонализирана контрола по време на проектиране, включват:

Актуален за вашия персонализиран подклас на Application. data-gu >casting Current към потребителски подкласове на Application,

MainWindow към вашия потребителски подклас на Window. data-gu >Прехвърляне на MainWindow към потребителски подклас на Window.

Метод FindResource или FindName на Current или MainWindow. data-gu >използване на метода FindResource или FindName на Current или MainWindow,

монтаж. GetEntryAssembly е върнала стойност, която е null. data-gu >без проверка за връщане на метода на сглобяване. GetEntryAssembly е null. нула . data-gu >За Visual Studio този метод връща null.

Има два подхода за писане на код за времето за проектиране. Първият подход е да напишете защитен код чрез проверка на входните параметри на класа, като преобразуватели на стойности. Метод GetIsInDesignMode. data-gu >Вторият подход е да проверите дали режимът на проектиране е активен чрез извикване на метода GetIsInDesignMode. Свойство IsInDesignTool. data-gu >За Silverlight използвайте свойството IsInDesignTool.

Валидирането на входните параметри е необходимо за някои реализации, тъй като средата за проектиране предоставя различни типове за някои входовеосигурява среда за изпълнение.

Обикновено селекторите на стилове и преобразувателите на стойност изискват един от тези подходи, за да работят правилно по време на проектиране.

Преобразуватели на стойности

Реализациите на IValueConverter трябва да проверяват за null и за очаквания тип в първия параметър на метода Convert. data-gu >Персонализирана реализация на IValueConverter трябва да проверява за нула и за очаквания тип на първия параметър на метода Convert. приложение. Ток, който се проваля по време на проектиране, ако преобразувателят на стойност не е внедрен правилно. data-gu >Следният XAML показва обвързването към Application. Current , който по време на проектиране ще се провали, ако преобразувателят на стойност не е внедрен правилно.

приложение. Current се отнася за приложението на дизайнера вместо за вашето приложение. data-gu >Свързването хвърля изключение по време на проектиране, защото Application . Текущо се отнася за дизайнерското приложение, вместо за разработваното приложение. За да избегне хвърлянето на изключение, резолверът на стойност трябва да провери своите входни параметри или дали режимът на проектиране е активен.

вярно, ако два входни параметъра отговарят на определена бизнес логика. data-gu >Следният пример на код показва как да валидирате входни параметри в преобразувател на стойност, който връща true, ако два входни параметъра отговарят на определена бизнес логика.

Вторият подход за писане на код по време на проектиране е да се провери дали режимът на разработка е активен. Следващият пример показва проверката на активността в режим на проектиране вместо проверката на параметрите, показана по-рано.

Селектори на стилове

Селекторите за потребителски стил също трябва да бъдат внедрени, за да се изпълняватрежим на развитие. приложение. MainWindow по време на изпълнение, за да определи кой ресурс се връща като DataTemplate. data-gu >Следният XAML показва персонализиран селектор на шаблон, който използва свойството Application по време на изпълнение. MainWindow за дефиниране на ресурса, върнат като DataTemplate. Замяната на SelectTemplate връща нула по време на проектиране. data-gu >Този ресурс може да не е наличен по време на проектиране, така че претоварването на SelectTemplate връща нула по време на проектиране.