Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Разработчикам, работающим с проектами XAML, часто приходится обнаруживать и устранять сбои привязки данных XAML в своих приложениях. Теперь есть средства в Visual Studio 2019 версии 16.8 или более поздней и Visual Studio 2022, чтобы помочь найти эти раздражительные сбои привязки данных во время отладки приложения. Ниже приведены примеры распространенных сбоев привязки.
- Привязка к имени свойства, которое не существует:
{Binding Wrong.Name} - Привязка к значению неправильного типа, например привязка к логическому значению, когда требуется перечисление:
Visibility="{Binding IsVisible}"
Так как эти привязки вычисляются во время выполнения с помощью отражения, редактор XAML не всегда может перехватывать их, и сборка по-прежнему будет выполнена успешно. Сбой происходит только во время выполнения.
Привязка данных XAML описана в следующих статьях:
- Для WPF: обзор привязки данных — WPF .NET
- Для UWP: Обзор привязки данных — приложения UWP
- Для Xamarin.Forms: "Привязка данных" Xamarin.Forms — Xamarin
- Для .NET MAUI: привязка данных .NET MAUI
Ошибки привязки всегда записываются в окно вывода отладки в Visual Studio. Но сбои привязки легко пропустить в выводе отладки, так как он содержит другие отладочные сведения, из-за которых они исчезают из поля зрения. Ниже приведен пример сбоя привязки WPF в отладочном окне:
Сбой привязки может находиться на сотни строк выше видимой части окна, и текст не указывает точно, какая именно привязка вызвала сбой, поэтому нужно обдумать это и выполнить поиск.
Теперь в окне средства "Сбои привязки XAML" можно четко увидеть, какие привязки завершились сбоем, а также соответствующие данные для каждого сбоя, например расположение файла в XAML. Кроме того, существует множество полезных функций для изучения сбоев путем поиска, сортировки и даже открытия редактора XAML с фокусом на неудачной привязке.
Дважды щелкнув эти строки, откроется исходный XAML для привязки, как показано на следующем рисунке:
Окно инструмента "Ошибки привязки XAML"
Окно средства "Сбои привязки XAML" доступно при отладке. Чтобы открыть панель, перейдите к Отладка>Windows>Сбои привязки XAML.
Или выберите ошибки привязки на панели инструментов приложения. Рядом с значком отображается количество сбоев привязки в окне средства.
Если в окне инструмента отсутствуют сбои привязки, значок отображается как серый без числа рядом с ним. Это полезно при запуске приложения. Если значок станет красным с числом, щелкните на него, чтобы быстро перейти к окну инструмента и увидеть, какие произошли сбои привязки. Нет необходимости следить за окнами инструментов Visual Studio. При сбое привязки состояние индикатора отображает немедленное состояние.
Аналогичный значок также отображается в окне динамического визуального дерева.
Ниже приведено описание всех компонентов окна инструмента XAML для проверки привязок.
- Панель инструментов вверху содержит кнопки следующим образом:
- Очистить список сбоев. Это полезно, если вы собираетесь отобразить новую страницу в приложении и хотите узнать, отображаются ли какие-либо сбои привязки. При запуске нового сеанса отладки список автоматически очищается.
- Удалить выбранные строки: если сбой был исправлен или не имеет значения, его можно удалить из списка. Удаленные строки отображаются снова, если привязка завершается ошибкой.
- Снимите все фильтры: если в списке есть фильтры, например поиск текста, эта кнопка очищает их и отображает полный список.
- Объединить дубликаты: Часто одна и та же привязка многократно терпит неудачу подряд, когда она находится в шаблоне элемента. Если кнопка «Объединить дубликаты» выбрана (обведена контуром), все повторяющиеся сбои отображаются как одна строка. Столбец Count показывает, сколько раз произошел сбой.
- Поле под названием «Сбои привязки поиска» в верхнем углу позволяет отфильтровать сбои, оставив только те, которые содержат определенный текст.
- Столбцы таблицы отображены в следующем порядке:
- Значок, показывающий, является ли строка ошибкой или предупреждением.
- Значок, показывающий угловые скобки
<>, если переход к неудачной{Binding}в XAML поддерживается. См. раздел поддерживаемых платформ. -
контекст данных: это имя типа для исходного объекта привязки.
- См. Binding.Source
-
путь привязки: это путь привязки для свойства
- См. раздел Binding.Path
- Целевой объект. Этот параметр — это имя типа и свойства, в котором задано значение привязки.
- Тип цели: это ожидаемый тип свойства привязки цели.
- описание. Этот столбец содержит дополнительные сведения о том, что именно произошло сбоем привязки.
- файл, строкаи проект: если известно, это местоположение в XAML, где определена привязка.
- Щелкните правой кнопкой мыши строку или несколько выбранных строк с контекстным меню с стандартными параметрами для отображения или скрытия столбцов или группировки их. Ниже приведены другие варианты.
- Скопируйте весь текст из строки или только одного столбца в буфер обмена.
- Функция "Copy Original Error" копирует текст, отображаемый в окне вывода отладки.
- Просмотр источника открывает источник привязки в XAML для выделенной строки.
- Сброс столбцов отменяет все изменения видимости и сортировки столбцов, что позволяет быстро вернуться к исходному отображению.
Чтобы отсортировать список, щелкните любой заголовок столбца. Чтобы выполнить сортировку по дополнительному столбцу, удерживайте клавишу SHIFT и щелкните другой заголовок столбца. Чтобы выбрать, какие столбцы отображаются и которые скрыты, выберите Показать столбцы в контекстном меню. Чтобы изменить порядок отображения столбцов, перетащите любой заголовок столбца влево или вправо.
Дважды щелкнув строку или нажав клавишу ВВОД, чтобы перейти к источнику, можно нажать клавишу F8 или SHIFT+F8, чтобы перейти вниз или вверх по списке ошибок привязки. Это похоже на другие панели в Visual Studio, которые отображают список.
Поддерживаемые платформы
Большинство платформ XAML поддерживаются, если ошибки привязки записываются в отладочные выходные данные. Некоторые платформы предоставляют дополнительные исходные сведения отладчику, который позволяет переходить к источнику.
| платформа | поддерживаемые | Перейдите к поддерживаемому источнику |
|---|---|---|
| WPF .NET Framework | Да | Нет |
| WPF .NET 5.0 RC2+ | Да | Да |
| UWP | Да | Нет |
| настольной WinUI3 | Да | Нет |
| MAUI (мультиплатформенный интерфейс приложений) | Да | Нет |
| Xamarin 4.5.0.266-pre3+ | Да | Да |
| Xamarin до 4.5.0.266-pre3 | Нет | Нет |
Чтобы обеспечить переход к источнику, функция горячей перезагрузки XAML должна быть включена в Visual Studio. В области
Чтобы обеспечить переход к источнику, функция горячей перезагрузки XAML должна быть включена в Visual Studio. В диалоговом окне"Параметры>" разверните раздел "Горячая перезагрузка XAML" в разделе "Отладка>XAML", установите флажок "Включить горячую перезагрузку XAML" и нажмите кнопку "ОК".
Навигация по источнику работает только для привязок, определенных в исходных файлах XAML, а не в том случае, если они создаются с помощью кода. Вы можете четко увидеть, какие строки поддерживают переход к источнику. Если в втором столбце нет значка угловой скобки, то переход к источнику не поддерживается, например с выделенной строкой на следующем снимке экрана:
Для WPF в .NET Framework ошибки привязки данных должны отображаться в выходных данных отладки для области "Сбои привязки XAML" для обнаружения и отображения их. Настройте параметр привязки данных в области Инструменты>Параметры в разделе Все настройки>Отладка>Выходное окно>Параметры трассировки WPF.
Для WPF в .NET Framework ошибки привязки данных должны отображаться в выходных данных отладки для области "Сбои привязки XAML" для обнаружения и отображения их. Настройте параметр Привязки данных в диалоговом окне Инструменты>Параметры, в разделе Окно вывода>отладки, группы параметров трассировки WPF.
Если значение параметра равно "Отключено " или "Критическое", ошибки привязки данных не записываются в отладочные выходные данные и не могут быть обнаружены. При использовании WPF в .NET 5, .NET 6 и более поздних версиях настройка вывода привязки данных не влияет на список сбоев.