다음을 통해 공유


XAML 데이터 바인딩 진단

XAML 프로젝트에서 작업하는 개발자는 애플리케이션에서 XAML 데이터 바인딩 오류를 검색하고 해결해야 하는 경우가 많습니다. 이제 Visual Studio 2019 버전 16.8 이상 및 Visual Studio 2022 내에 애플리케이션을 디버그하는 동안 이러한 성가신 데이터 바인딩 오류를 찾는 데 도움이 되는 도구가 있습니다. 일반적인 바인딩 실패의 예는 다음과 같습니다.

  • 존재하지 않는 속성 이름에 바인딩: {Binding Wrong.Name}
  • 열거형이 필요한 경우 부울 값에 잘못 바인딩하는 것과 같이 잘못된 형식의 값에 바인딩: Visibility="{Binding IsVisible}"

이러한 바인딩은 리플렉션을 사용하여 런타임에 계산되므로 XAML 편집기가 항상 바인딩을 catch할 수 있는 것은 아니며 빌드는 여전히 성공합니다. 오류는 런타임에만 발생합니다.

XAML 데이터 바인딩은 다음 문서에 설명되어 있습니다.

바인딩 오류는 항상 Visual Studio의 디버그 출력 창에 기록되었습니다. 그러나 바인딩 실패를 보기 밖으로 스크롤하는 다른 디버깅 정보가 포함되어 있으므로 디버그 출력 내에서 바인딩 오류를 쉽게 놓칠 수 있습니다. 다음은 디버그 출력 창 내에서 WPF 바인딩 실패의 예입니다.

바인딩 오류가 포함된 출력 창의 스크린샷

바인딩 실패는 창의 맨 위에서 수백 줄 아래에 있을 수 있으며, 텍스트에서 오류가 발생한 바인딩을 정확히 알려주지 않으므로, 이를 고려하고 검색해야 합니다.

이제 XAML 바인딩 실패 도구 창에서 XAML 내의 파일 위치와 같이 각 오류에 대한 관련 데이터와 함께 실패한 바인딩을 명확하게 확인할 수 있습니다. 또한 실패한 바인딩에 포커스가 설정된 XAML 편집기를 검색, 정렬 및 열어 오류를 조사하는 데 유용한 기능이 많이 있습니다.

XAML 바인딩 실패 도구 창의 스크린샷

이러한 행을 두 번 클릭하면 다음 이미지와 같이 바인딩에 대한 원본 XAML이 열립니다.

XAML 편집기의 예제 바인딩 스크린샷

XAML 바인딩 실패 도구 창

디버깅하는 동안 XAML 바인딩 실패 도구 창을 사용할 수 있습니다. 열려면 디버그>>XAML 바인딩 실패로 이동하세요.

디버그 메뉴의 XAML 바인딩 실패 옵션 스크린샷

또는 애플리케이션 도구 모음에서 바인딩 실패 단추를 선택합니다. 아이콘 옆에 있는 번호는 도구 창에 표시되는 바인딩 실패 수를 보여 줍니다.

바인딩 실패 단추를 보여 주는 앱 내 도구 모음의 스크린샷

도구 창에 바인딩 오류가 없으면 아이콘 옆에 숫자가 없는 회색으로 표시됩니다. 이는 애플리케이션을 실행하는 동안 유용합니다. 아이콘이 숫자로 빨간색으로 바뀌면 아이콘을 클릭하여 도구 창으로 빠르게 이동하여 어떤 바인딩 오류가 발생했는지 확인합니다. Visual Studio 도구 창을 감시할 필요가 없습니다. 바인딩이 실패하면 아이콘 상태가 즉시 상태를 표시합니다.

바인딩 실패가 없는 상태의 바인딩 실패 단추를 보여주는 앱 내 도구 모음의 스크린샷

라이브 시각적 트리 도구 창유사한 아이콘도 나타납니다.

라이브 시각적 트리 도구 창 내의 바인딩 실패 단추 스크린샷

다음은 XAML 바인딩 실패 도구 창의 모든 구성 요소에 대한 설명입니다.

XAML 바인딩 실패 도구 창의 스크린샷

  • 위쪽의 도구 모음에는 다음과 같은 단추가 포함되어 있습니다.
    • 오류 목록 지우기: 앱에 새 페이지를 표시하고 바인딩 오류가 표시되는지 확인하려는 경우에 유용합니다. 새 디버깅 세션을 시작하면 목록이 자동으로 지워집니다.
    • 선택한 행 삭제: 오류가 수정되었거나 관련이 없는 경우 목록에서 삭제할 수 있습니다. 바인딩이 다시 실패하면 삭제된 행이 다시 표시됩니다.
    • 모든 필터 지우기: 텍스트 검색과 같이 목록에 필터가 있는 경우 이 단추는 필터를 지우고 전체 목록을 표시합니다.
    • 중복 결합: 항목 템플릿 내에 있을 때 동일한 바인딩이 행에서 여러 번 실패하는 경우가 많습니다. 중복 결합 단추를 선택하면(윤곽선이 있는) 모든 중복 오류가 단일 행으로 표시됩니다. Count 열에는 오류가 발생한 횟수가 표시됩니다.
  • 위쪽 모서리의 검색 바인딩 실패 상자를 사용하면 오류를 특정 텍스트가 포함된 항목으로만 필터링할 수 있습니다.
  • 테이블 열은 순서대로 다음을 표시합니다.
    • 행이 오류 또는 경고인지 여부를 보여 주는 아이콘입니다.
    • XAML에서 실패한 <>로의 탐색이 지원되는 경우, {Binding} 꺾쇠 괄호를 표시하는 아이콘입니다. 지원되는 플랫폼 섹션을 참조하세요.
    • 데이터 컨텍스트: 바인딩의 원본 개체에 대한 형식 이름입니다.
    • 바인딩 경로: 바인딩의 속성 경로입니다.
    • 대상: 이 옵션은 바인딩의 값이 설정된 형식 및 속성 이름입니다.
    • 대상 형식: 바인딩의 대상 속성에 필요한 형식입니다.
    • 설명: 이 열에는 바인딩에 대해 정확히 실패한 항목에 대한 자세한 정보가 포함되어 있습니다.
    • 파일, 프로젝트: 알려진 경우 바인딩이 정의된 XAML의 위치입니다.
  • 행 또는 여러 개의 선택한 행을 마우스 오른쪽 단추로 클릭하면 상황에 맞는 메뉴가 표시되며 열을 표시/숨기거나 그룹화하기 위한 표준 옵션이 있습니다. 다른 옵션은 다음과 같습니다.
    • 행 또는 단일 열에서 클립보드로 모든 텍스트를 복사합니다.
    • 원본 복사 오류는 디버그 출력 창에 표시된 텍스트를 복사합니다.
    • 뷰 원본은 선택한 행 하나에 대해 XAML의 바인딩 원본으로 이동합니다.
    • 열을 다시 설정하면 열 표시 유형 및 정렬에 대한 모든 변경 내용이 실행 취소되어 원래 표시된 내용으로 빠르게 돌아갑니다.

목록을 정렬하려면 열 머리글을 클릭합니다. 추가 열을 기준으로 다시 정렬하려면 Shift 키를 누른 채 다른 열 머리글을 클릭합니다. 표시되는 열과 숨겨진 열을 선택하려면 바로 가기 메뉴에서 표시를 선택합니다. 열이 표시되는 순서를 변경하려면 열 머리글을 왼쪽이나 오른쪽으로 끕니다.

행을 두 번 클릭하거나 Enter 눌러 원본으로 탐색한 후 F8 누르거나 Shift+F8 눌러 바인딩 실패 목록을 아래로 또는 위로 이동할 수 있습니다. 이는 목록을 표시하는 Visual Studio의 다른 창과 같습니다.

지원되는 플랫폼

바인딩 오류가 디버그 출력에 기록되는 경우 대부분의 XAML 플랫폼이 지원됩니다. 일부 플랫폼은 원본으로 이동할 수 있는 디버거에 추가 원본 정보를 제공합니다.

플랫폼 지원되는 지원되는 원본으로 이동
WPF .NET Framework 아니요
WPF .NET 5.0 RC2 이상
UWP 아니요
WinUI3 데스크톱 아니요
MAUI(다중 플랫폼 앱 UI) 아니요
Xamarin 4.5.0.266-pre3+
4.5.0.266-pre3 이전 버전의 Xamarin 아니요 아니요

원본으로의 탐색을 지원하려면 Visual Studio에서 XAML 핫 다시 로드 기능을 사용하도록 설정해야 합니다. 도구>옵션 창에서 모든 설정>디버깅> 섹션을 확장하고 XAML 핫 다시 로드 사용 확인란을 선택합니다.

도구 옵션 창에서 XAML 핫 다시 로드 옵션의 스크린샷

원본으로의 탐색을 지원하려면 Visual Studio에서 XAML 핫 다시 로드 기능을 사용하도록 설정해야 합니다. 도구>옵션 대화 상자에서 디버깅> 섹션을 확장하고 XAML 핫 다시 로드 사용 확인란을 선택한 다음 확인을 선택합니다.

도구 옵션 대화 상자에 있는 XAML Hot Reload 옵션의 스크린샷

소스로 탐색하는 것은 코드를 통해 만들어진 경우가 아니라 XAML 원본 파일에 정의된 바인딩에만 작동합니다. 원본으로의 탐색을 지원하는 행을 명확하게 확인할 수 있습니다. 두 번째 열에 꺾쇠 괄호 아이콘이 없으면 다음 스크린샷에서 강조 표시된 행과 같이 원본으로의 탐색이 지원되지 않습니다.

원본 위치가 없는 XAML 바인딩 실패를 보여 주는 스크린샷

.NET Framework의 WPF의 경우 XAML 바인딩 실패 창의 디버그 출력에 데이터 바인딩 오류를 표시하여 검색하고 표시해야 합니다. 모든 설정>출력 창>WPF 추적 설정 섹션의 >> 창에서 데이터 바인딩 설정을 구성합니다.

데이터 바인딩 옵션을 설정하는 방법을 보여 주는 스크린샷

.NET Framework의 WPF의 경우 XAML 바인딩 실패 창의 디버그 출력에 데이터 바인딩 오류를 표시하여 검색하고 표시해야 합니다. 도구> 대화 상자의 디버깅> 섹션에 있는 WPF 추적 설정 그룹에서 데이터 바인딩 설정을 구성합니다.

WPF 추적 설정 그룹의 데이터 바인딩 옵션 스크린샷

설정 값이 Off 또는 Critical이면 데이터 바인딩 오류가 디버그 출력에 기록되지 않으며 검색할 수 없습니다. .NET 5, .NET 6 이상에서 WPF를 사용하면 데이터 바인딩 출력 설정이 오류 목록에 영향을 주지 않습니다.