Виправлення неполадок, пов’язаних з помилками завантаження конструктора WPF і Silverlight,

Конструктор WPF для Visual Studio включає багатофункціональний візуальний конструктор, що розширюється, для створення XAML-коду. Якщо файл XAML не завантажується в конструктор, є кілька варіантів усунення несправностей. У цьому розділі наводяться деякі поради та описуються способи, що дозволяють усунути помилки завантаження середовищ. Конструктор WPF. Наведені в цьому розділі приклади присвячені WPF, але більшість питань, прийомів і рішень можна застосувати і до WPF, і до Silverlight.

Примітка

Багато способів, описаних у цьому розділі, також застосовні до засобу Expression Blend.

Використовуйте Visual Studio для переходу в код під час розробки. Для налагодження збоїв завантаження можна використовувати другий екземпляр Visual Studio. How to: Debug a Designer Load Failure . data-gu >Додаткові відомості див. у розділі Практичний посібник. Налагодження помилки завантаження конструктора.

Наведені нижче дії допоможуть усунути помилки завантаження середовищ. Конструктор WPF.

Прочитайте всі отримані повідомлення про винятки.

Це може здаватися очевидним, але у разі отримання винятку слід уважно прочитати повідомлення. У деяких випадках це допомагає швидко знайти причину проблеми. Debugging and Interpreting Errors в WPF Designer . data-gu >Додаткові відомості див. у розділі Налагодження та інтерпретація помилок у конструкторі WPF .

Визначте, чи проблема не обумовлена ​​конкретною реалізацією.

Створіть і запустіть програму, щоб визначити, чи є неполадка результатом тільки реалізації або взаємодії з середовищ. Конструктор WPF. Якщо програма будується та запускається, помилка часу розробки швидше за все викликанареалізацією.

Визначте, чи є проблемою помилка завантаження.

Якщо конструктору не вдається виконати завантаження через виняток, проблемою, швидше за все, є помилка завантаження. Якщо є код користувача, який завантажується під час розробки, і під час розробки виникають винятки або помилки завантаження, див. розділ Написання коду для часу розробки нижче.

Перегляньте код, який завантажується під час розробки.

Існує два підходи до запису коду, що також виконується під час розробки. Перший підхід полягає в написанні коду захисту шляхом перевірки вхідних параметрів для класів. GetIsInDesignMode method. data-gu >Другий підхід полягає у перевірці активності режиму розробки викликом методу GetIsInDesignMode . Щоб отримати додаткові відомості, див. Написання коду для часу розробки нижче.

Перегляньте інші області коду.

Деякі поради щодо програмування при роботі із середовищем. Конструктор WPF див. у розділі Поради щодо програмування нижче. Методи написання найбільш надійного коду див. у розділі Рекомендації щодо програмування нижче.

WPF Designer forum на MSDN для з'єднання з іншими розробниками, які використовують WPF Designer. data-gu >Якщо проблеми залишаються, можна перейти на форум розробників WPF на MSDN (англійською мовою), щоб зв'язатися з іншими розробниками серед середовищ. Конструктор WPF. Visual Studio та .NET Framework Feedback site. data-gu >Для надсилання звіту про можливі проблеми та можливі пропозиції скористайтеся веб-сайтом Visual Studio та .NET Framework. Feedback (англійською мовою).

Переконайтеся, що код виконується як під час розробки, так і під час виконання. Application. Current is your application. data-gu>Якщо код виконується під час розробки, не слід вважати, що Application . Current є додатком, що розробляється. Current is Expression Blend. data-gu >Наприклад, при використанні засобу Expression Blend Current є Expression Blend. MainWindow is not your applications main window." Data-gu >Під час розробки MainWindow не є головним вікном програми, що розробляється.

Current to your custom subclass of Application. data-gu >приведення типу Current до настроюваних підкласів Application ,

MainWindow to your custom subclass of Window . data-gu >Приведення типу MainWindow до підкласу користувача Window .

FindResource або FindName метод на Current or MainWindow . data-gu >використання методу FindResource або FindName на Current або MainWindow ,

Як і раніше . GetEntryAssembly has returned a value that is null . data-gu - відсутність перевірки повернення методом Assembly . GetEntryAssembly значення null . null. data-gu >Для середовища Visual Studio цей метод повертає значення null.

Існує два підходи до написання коду часу розробки. Перший підхід полягає в написанні коду захисту шляхом перевірки вхідних параметрів класів, таких як перетворювачі значень. GetIsInDesignMode method. data-gu >Другий підхід полягає у перевірці активності режиму розробки викликом методу GetIsInDesignMode . IsInDesignTool property. data-gu >Для Silverlight використовуйте властивість IsInDesignTool.

Перевірка вхідних параметрів необхідна для деяких реалізацій, оскільки для деяких вхідних даних середовище розробки надає типи, що відрізняються від тих, щонадає середовище виконання.

Зазвичай, для селекторів стилю та перетворювачів значень потрібен один із цих підходів для правильної роботи під час розробки.

Перетворювачі значень

IValueConverter implementations повинен check for null and for expected type in the first parameter of the Convert method. data-gu >У реалізації користувача IValueConverter повинна проводитися перевірка на наявність значення null і на очікуваний тип першого параметра методу Convert . Application. Принцип того, що мітки при визначенні часу, якщо значення конвертатора не є реалізованим правильно. data-gu >У наступному XAML-коді показується прив'язка до Application . Current , що під час розробки призводить до збою, якщо перетворювач значень реалізований неправильно.

Application. Сучасні refers to the designer application instead of your application. data-gu >Прив'язка викликає виняток під час розробки, оскільки Application . Current посилається на додаток конструктора замість програми, що розробляється. Щоб уникнути виключення, перетворювач значень повинен перевіряти свої вхідні параметри або активність режиму розробки.

true if two input parameters satisfy particular business logic. data-gu >У наступному прикладі коду показується, як перевіряти вхідні параметри в перетворювачі значень, що повертає значення true , якщо два вхідні параметри задовольняють конкретну бізнес-логіку.

Другий підхід до написання коду часу розробки полягає у перевірці активності режиму розробки. У наступному прикладі показується перевірка активності режиму розробки замість перевірки параметрів, наведених раніше.

Селектори стилю

Налаштовані селектори стилю також повинні бути реалізовані для запуску врежим розробки. Application. MainWindow at run time to determine which resource is returned as a DataTemplate . data-gu >У наступному XAML-коді показаний налаштований селектор шаблону, в якому під час виконання використовується властивість Application . MainWindow для визначення ресурсу, що повертається у вигляді DataTemplate . SelectTemplate override returns null at design time. data-gu >Під час розробки цей ресурс може бути недоступний, тому навантаження SelectTemplate повертає значення null під час розробки.