Диагностика привязки данных XAML
Разработчикам, работающим с проектами 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
Ошибки привязки всегда записываются в окно вывода отладки в Visual Studio. Но легко пропустить сбои привязки в выходных данных отладки, так как она содержит другие сведения об отладке, которые прокручивают сбои привязки вне представления. Ниже приведен пример сбоя привязки WPF в окне вывода отладки:
Сбой привязки может быть сотнями строк в верхней части окна, и текст не сообщает вам, какая привязка была сбоем, поэтому вам нужно подумать об этом и выполнить поиск.
Теперь в окне средства "Сбои привязки XAML" можно четко увидеть, какие привязки завершились сбоем, а также соответствующие данные для каждого сбоя, например расположение файла в XAML. Кроме того, существует множество полезных функций для изучения сбоев путем поиска, сортировки и даже открытия редактора XAML с фокусом на неудачной привязке.
Дважды щелкнув эти строки, откроется исходный XAML для привязки, как показано на следующем рисунке:
Окно средства "Сбои привязки XAML"
Во время отладки доступно окно средства "Сбои привязки XAML". Чтобы открыть его, перейдите к разделу "Отладка>сбоев привязки XAML Для Windows".>
Или нажмите кнопку "Сбои привязки " на панели инструментов приложения. Рядом с значком отображается количество сбоев привязки в окне средства.
Если в окне инструмента отсутствуют сбои привязки, значок отображается как серый без числа рядом с ним. Это полезно при запуске приложения. Если значок переключился красным числом, щелкните его, чтобы быстро перейти к окну инструмента, чтобы увидеть, какие сбои привязки произошли. Нет необходимости следить за окнами инструментов Visual Studio. Если привязка завершается ошибкой, значок сразу сообщит вам.
Аналогичный значок также отображается в окне средства "Динамическое визуальное дерево".
Ниже приведено описание всех компонентов окна средства привязки XAML.
- Панель инструментов вверху содержит кнопки следующим образом:
- Снимите список сбоев. Это полезно, если вы собираетесь отобразить новую страницу в приложении и хотите узнать, отображаются ли какие-либо сбои привязки. При запуске нового сеанса отладки список автоматически очищается.
- Удаление выбранных строк: если сбой исправлен или не имеет значения, его можно удалить из списка. Удаленные строки будут отображаться снова, если привязка завершается ошибкой.
- Снимите все фильтры: если в списке есть фильтры, например поиск текста, эта кнопка снимите их и отобразит полный список.
- Объединение повторяющихся элементов: часто одна и та же привязка будет завершаться много раз в строке, когда она находится в шаблоне элемента. При выборе кнопки "Объединить дубликаты" (с контуром вокруг нее) все повторяющиеся сбои отображаются как одна строка. Столбец Count показывает, сколько раз произошел сбой.
- Поле "Ошибки привязки поиска" в верхнем углу позволяет фильтровать ошибки только тем, которые содержат определенный текст.
- Столбцы таблицы, упорядоченные, отображаются:
- Значок, показывающий, является ли строка ошибкой или предупреждением.
- Значок, показывающий угловые скобки
<>
, если переход к сбою{Binding}
в XAML поддерживается. См. раздел "Поддерживаемые платформы ". - Контекст данных: это имя типа для исходного объекта привязки
- Путь привязки: это путь к свойству для привязки
- Целевой объект: это имя типа и свойства, в котором будет задано значение привязки.
- Целевой тип: это ожидаемый тип целевого свойства привязки.
- Описание. Этот столбец содержит дополнительные сведения о том, что именно не удалось выполнить привязку.
- Файл, строка и проект: если известно, это расположение в XAML, в котором определена привязка.
- Щелкнув правой кнопкой мыши строку или несколько выбранных строк, отобразится контекстное меню с стандартными параметрами для отображения или скрытия столбцов или группировки их. Ниже приведены другие варианты.
- Скопируйте весь текст из строки или только одного столбца в буфер обмена.
- Скопируйте исходную ошибку, скопируйте текст, появившийся в окне вывода отладки.
- Просмотр источника будет переходить к источнику привязки в XAML для одной выбранной строки.
- Сброс столбцов отменяет все изменения видимости и сортировки столбцов, что позволяет быстро вернуться к исходному отображению.
Для сортировки списка выберите любой заголовок столбца. Чтобы выполнить сортировку по дополнительному столбцу, удерживайте клавишу SHIFT и щелкните другой заголовок столбца. Чтобы выбрать отображаемые и скрываемые столбцы, щелкните команду Показать столбцы в контекстном меню. Чтобы изменить порядок, в котором отображаются столбцы, перетащите любой заголовок столбца влево или вправо.
Дважды щелкнув строку или нажав клавишу ВВОД , чтобы перейти к источнику, можно нажать клавишу F8 или SHIFT+F8 , чтобы перейти вниз или вверх по списку сбоев привязки. Это похоже на другие панели в Visual Studio, которые отображают список.
Поддерживаемые платформы
Большинство платформ XAML поддерживаются, если ошибки привязки записываются в отладочные выходные данные. Некоторые платформы предоставляют дополнительные исходные сведения отладчику, который позволяет переходить к источнику.
Платформа | Поддерживается | Переход к источнику, поддерживаемый |
---|---|---|
ПЛАТФОРМА .NET FRAMEWORK WPF | Да | Нет |
WPF .NET 5.0 RC2+ | Да | Да |
UWP | Да | Нет |
Рабочий стол WinUI3 | Да | Нет |
MAUI (пользовательский интерфейс мультиплатформенного приложения) | Да | Нет |
Xamarin 4.5.0.266-pre3+ | Да | Да |
Xamarin до 4.5.0.266-pre3 | No | No |
Параметр XAML Горячая перезагрузка должен быть включен в Visual Studio для перехода к источнику для работы. Этот параметр находится в диалоговом окне отладки параметров>инструментов>:
Навигация по источнику работает только для привязок, определенных в исходных файлах XAML, а не в том случае, если они создаются с помощью кода. Вы можете четко увидеть, какие строки поддерживают переход к источнику. Если в втором столбце нет значка угловой скобки, то переход к источнику не поддерживается, например с выделенной строкой на следующем снимке экрана:
Для WPF в платформа .NET Framework ошибки привязки данных должны отображаться в выходных данных отладки для области "Сбои привязки XAML" для обнаружения и отображения их. Этот параметр доступен в >диалоговом окне "Параметры>отладки>выходных данных>" wpf trace Параметры. Если параметр отключен или критически важен, ошибки привязки данных не записываются в отладочные выходные данные и не могут быть обнаружены. При использовании WPF в .NET 5, .NET 6 и последующем параметр выходных данных привязки данных не влияет на список сбоев.